www.thaiio.com หน้ากระดานข่าวหลัก
Google
 
Web www.thaiio.com

หน้าแรกเวปไซด์หน้าแรก Thaiio.com คำถามถามบ่อยของกระดานข่าวคำถามถามบ่อยของกระดานข่าว ค้นหาค้นหา รายนามสมาชิกรายนามสมาชิก กลุ่มผู้ใช้งานกลุ่มผู้ใช้งาน
ข้อมูลส่วนตัวข้อมูลส่วนตัว คุณไม่มีข่าวสารใหม่คุณไม่มีข่าวสารใหม่ ออกจากระบบ [ thaiio ]ออกจากระบบ [ thaiio ]

ห้องVBส่วนตัวของแมงเม่า

 

หน้าืั้ต่อไป

ดูกระทู้ก่อนนี้ :: ดูกระทู้ถัดไป  
ผู้ส่ง ข้อความ
voyager



เข้าร่วมเมื่อ: 18 สค. 2005
ตอบ: 68
ที่อยู่: เชียงใหม่

ตอบตอบ: พ. สค. 24, 2005 2:17 pm    ชื่อกระทู้: ห้องVBส่วนตัวของแมงเม่า ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

ใครอยาก post กระทู้เกี่ยวกับ visual basic 6.0 ทั้งที่เป็น hardware interface หรือ miscellaneous ถ้าไม่มีใคร post ก็จะมา post เอง 555555
กลับไปข้างบน
แสดงข้อมูลส่วนตัวของสมาชิก ส่งข่าวสารส่วนตัว ส่งอีเมล์ MSN
Voice
บุคคลทั่วไป





ตอบตอบ: ศ. ตค. 28, 2005 11:29 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

อยากให้ใครก็ได้ที่มีความรู้ช่วยดูโปรแกรมนี้หน่อย ว่าทำไมผมไม่สามารถส่งเสียงไปยังปลายทางได้
จะเขียนโปรแกรมตอบรับโทรศัพท์อัตโนมัติ แต่ตอนนี้ไม่สามารถส่งเสียงได้ ไม่ทราบว่าเขียนโปรแกรมผิดรึเปล่า
ช่วยแนะนำหน่อยครับ ต้องการใช้ด่วนครับ
--------------------------------------------------------------
Option Explicit
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Public Speak As Variant
Public Ring As Boolean
Dim buff As Variant
Dim temp As Variant
--------------------------------------------------------------
Private Sub Command1_Click()
Command1.Caption = "RING"
MSComm1.Output = "ATH0" + Chr(13)
End Sub
--------------------------------------------------------------
Private Sub Form_Load()
Ring = False
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 0
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
MSComm1.Output = "AT+FCLASS=8" + Chr(13)
End Sub
--------------------------------------------------------------
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
buff = MSComm1.Input
Text2.Text = Text2.Text + buff + vbCrLf
If InStr(1, buff, "RING") Then
Ring = True
Command1.Caption = "HANK UP"
End If
If Ring = True Then
MSComm1.Output = "ATA" + Chr(13)
MSComm1.Output = "AT+VIT=6" + Chr(13)
MSComm1.Output = "AT+VSL=1" + Chr(13)
Speak = mciExecute("play C:\VMGreet.wav")
Ring = False
Else
If InStr(1, buff, "~") Then
DTMF (temp)
Else
temp = buff
End If
End If
End Select
End Sub
--------------------------------------------------------------
Private Sub DTMF(numdtmf As Variant)
Text1.Text = Text1.Text + "<<"
If InStr(numdtmf, "1") Then
Text1.Text = Text1.Text + "1"
ElseIf InStr(1, numdtmf, "2") Then
Text1.Text = Text1.Text + "2"
ElseIf InStr(1, numdtmf, "3") Then
Text1.Text = Text1.Text + "3"
ElseIf InStr(1, numdtmf, "4") Then
Text1.Text = Text1.Text + "4"
ElseIf InStr(1, numdtmf, "5") Then
Text1.Text = Text1.Text + "5"
ElseIf InStr(1, numdtmf, "6") Then
Text1.Text = Text1.Text + "6"
ElseIf InStr(1, numdtmf, "7") Then
Text1.Text = Text1.Text + "7"
ElseIf InStr(1, numdtmf, "8") Then
Text1.Text = Text1.Text + "8"
ElseIf InStr(1, numdtmf, "9") Then
Text1.Text = Text1.Text + "9"
ElseIf InStr(1, numdtmf, "*") Then
Text1.Text = Text1.Text + "*"
ElseIf InStr(1, numdtmf, "0") Then
Text1.Text = Text1.Text + "0"
ElseIf InStr(1, numdtmf, "#") Then
Text1.Text = Text1.Text + "#"
End If
Text1.Text = Text1.Text + ">>" + vbCrLf
End Sub
--------------------------------------------------------------
กลับไปข้างบน
McCA1414
บุคคลทั่วไป





ตอบตอบ: ส. ตค. 29, 2005 12:30 pm    ชื่อกระทู้: รบกวนด้วยนะครับ ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

รบกวนพี่แมงเม่า ช่วยทิ้งเบอร์ ไว้ให้หน่อยได้มั้ยครับ เพราะผม อยากจะรบกวนปรึกษาเรื่องโปเจ็ค เกี่ยวกับการเขียน file stream หรือถ้าพี่ไม่สะดวก ยิงมาก้อได้ครับ ผมโทรกลับเองนะครับ อ้อ 090393258,079770117,058063370 น้องเอ กับน้องปอด์นนะครับ รบกวนอย่างสูงเลยนะครับ เพราะจะสอบวันอังคารแล้ว เหลือปัญหาตรงเรื่องการส่งภาพที่ยังแก่ไม่ตกเลยนะครับ หรือ รบกวนท่านใดก็ได้ครับ ที่พอจะให้คำแนะนำและปรึกษาได้ ช่วยยิงเบอร์มาหน่อยนะครับ
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: ส. ตค. 29, 2005 6:09 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
รบกวนพี่แมงเม่า ช่วยทิ้งเบอร์ ไว้ให้หน่อยได้มั้ยครับ เพราะผม อยากจะรบกวนปรึกษาเรื่องโปเจ็ค เกี่ยวกับการเขียน file stream หรือถ้าพี่ไม่สะดวก ยิงมาก้อได้ครับ ผมโทรกลับเองนะครับ อ้อ 090393258,079770117,058063370 น้องเอ กับน้องปอด์นนะครับ รบกวนอย่างสูงเลยนะครับ เพราะจะสอบวันอังคารแล้ว เหลือปัญหาตรงเรื่องการส่งภาพที่ยังแก่ไม่ตกเลยนะครับ หรือ รบกวนท่านใดก็ได้ครับ ที่พอจะให้คำแนะนำและปรึกษาได้ ช่วยยิงเบอร์มาหน่อยนะครับ


ไม่จบแน่ แฮะๆ.....ล้อเล่น
บอกตรง ๆ ว่าการส่งภาพ(clipboard)โดยตรงนั้นไม่ง่ายเลยปกติก็จะส่งเป็นไฟล์(xx.jpg,xx.bmp)แล้วให้ Auto view บน picture box ของอีกฝั่งเมื่อภาพ(ไฟล์)ไปถึงแล้วโดยอาศัยการอ่านจาก directory ของโปรเจคหรือdirectory ที่กำหนด

พี่คิดว่าน้องเขียนโปรแกรมส่งไฟล์ระหว่าง client กับ server ได้แล้ว จะเสริมเรื่องการเอาภาพมาแสดงบน pixture box แล้วกัน



ลองเอาไปดัดแปลง เช่น เมื่อมีไฟล์ภาพใหม่ถูกส่งเข้ามา ก็ให้เอาภาพนั้นไปแสดงบน picture box ทันที แล้วมันก็จะดูเหมือนว่าภาพถูกส่งไปโดยตรงจริง ๆ

http://www.geocities.com/ezy_math/viewer.zip

Embarassed Embarassed
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: ส. ตค. 29, 2005 6:16 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
พี่ครับ ผมต้องสร้างฟอร์มยังไงบ้างครับถึงจะรัน sourcecode ของพี่ได้อ่า คือผมรันแล้วมันไม่มีภาพเลย มีแต่ฟอร์มสีเทาๆ


ไม่ Declare แล้วมันจะรู้จักได้ไงละครับ

Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long

Private mCapHwnd As Long

Private Const CONNECT As Long = 1034
Private Const DISCONNECT As Long = 1035
Private Const GET_FRAME As Long = 1084
Private Const COPY As Long = 1054

Embarassed Embarassed
กลับไปข้างบน
McCA1414
บุคคลทั่วไป





ตอบตอบ: ส. ตค. 29, 2005 7:16 pm    ชื่อกระทู้: ขอบคุณพี่แมงเม่ามากนะครับ แล้วผมจะลองพยายามดู นะครับ ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

Crying or Very sad Crying or Very sad ขอบคุณพี่แมงเม่ามากนะครับ แล้วผมจะลองพยายามดู นะครับ ได้ผลยังไง จะเล่าให้ฟังนะครับ
กลับไปข้างบน
รัต



เข้าร่วมเมื่อ: 17 ตค. 2005
ตอบ: 8
ที่อยู่: 57 ม.1 ต.โขมง อ.ท่าใหม่ จ.จันทบุรี

ตอบตอบ: ส. ตค. 29, 2005 9:20 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คือผมจะรับเสียงกีต้าร็จาก soundcard พี่พอจะมี code vb ที่ใช้รับเสียงจาก soundcard ไหมครับ ผมคิดว่ามันน่าคล้ายๆ กับการอัดเสียงแต่ผมไม่รู้ว่าจะทำยังไง รบกวนพี่หน่อยนะครับ ....ขอบคุณครับ
กลับไปข้างบน
แสดงข้อมูลส่วนตัวของสมาชิก ส่งข่าวสารส่วนตัว ส่งอีเมล์ MSN
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: อาทิตย์ ตค. 30, 2005 2:48 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
คือผมจะรับเสียงกีต้าร็จาก soundcard พี่พอจะมี code vb ที่ใช้รับเสียงจาก soundcard ไหมครับ ผมคิดว่ามันน่าคล้ายๆ กับการอัดเสียงแต่ผมไม่รู้ว่าจะทำยังไง รบกวนพี่หน่อยนะครับ ....ขอบคุณครับ


Record เสียงจาก sound card ก็ไม่ยากนิครับ

Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
Private Declare Function mciGetErrorString Lib "winmm.dll" _
Alias "mciGetErrorStringA" _
(ByVal dwError As Long, _
ByVal lpstrBuffer As String, _
ByVal uLength As Long) As Long

ลองเอาไป search หาใน google น่าจะมี code อยู่เยอะ
กลับไปข้างบน
เด็กตาดำๆ
บุคคลทั่วไป





ตอบตอบ: อาทิตย์ ตค. 30, 2005 4:01 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

พี่แมงมเค้าบ T_T ช่วยสอนผมเกี่ยวกับโปรแกรม Motion Capture ของพี่ที ผมลองโหลดมาใช้แล้ว แต่ไม่มีซอดโค้ดอ่ะครับมีแต่ตัว exe และซอดโค้ดที่พี่ให้มามันตัวเดียวกันรึเปล่าครับ มันสั้นขนาดนี้เลยเหรอครับ ผมมีความรู้ด้าน vb นิดเดียวเอง T_T อยากให้พี่อธิบายเกี่ยวกับการเขียนโปรแกรมนี้ได้ป่าวอ่าครับ เช่นเริ่มสร้างฟอร์ม คือผมไม่รู้จะสร้างอะไรยังไง
ซอดโค้ดก๊อบมาวางแล้วก็ไม่มีไรเกิดขึ้นเลยอ่ะครับ

ด้วยความนับถือครับ พี่แมงเม่า
กลับไปข้างบน
รัต



เข้าร่วมเมื่อ: 17 ตค. 2005
ตอบ: 8
ที่อยู่: 57 ม.1 ต.โขมง อ.ท่าใหม่ จ.จันทบุรี

ตอบตอบ: จ. ตค. 31, 2005 12:45 am    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

ขอบคุณครับพี่ แล้วผมจะลองไปใช้ดูครับ แล้วจะมารบกวนพี่ใหม่ครับ ขอบคุณครับ Very Happy
กลับไปข้างบน
แสดงข้อมูลส่วนตัวของสมาชิก ส่งข่าวสารส่วนตัว ส่งอีเมล์ MSN
น๊อต
บุคคลทั่วไป





ตอบตอบ: จ. ตค. 31, 2005 1:37 am    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

ผมต้องการให้โมเด็มเล่นเสียง wav แบบ pcm เพื่อเวลาใครโทรเข้ามาแล้วได้ยินเสียงไฟล์ wav นั้นครับ โดยใช้ VB ไม่ทราบว่าจะต้องเขียนโค๊ดยังไงครับ พี่แมงเม้าพอจะให้ความรู้เรื่องนี้ได้รึเปล่าครับ

ปล.เคยลองทำตามในเวปนี้แล้วครับ โทรเข้ามาไม่ได้ยินเสียงครับจะมีเสียงทีลำโพงของคอมไม่ได้ยินที่โทรศัพท์ที่ใช้โทรครับ
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: จ. ตค. 31, 2005 10:17 am    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
พี่แมงมเค้าบ T_T ช่วยสอนผมเกี่ยวกับโปรแกรม Motion Capture ของพี่ที ผมลองโหลดมาใช้แล้ว แต่ไม่มีซอดโค้ดอ่ะครับมีแต่ตัว exe และซอดโค้ดที่พี่ให้มามันตัวเดียวกันรึเปล่าครับ มันสั้นขนาดนี้เลยเหรอครับ ผมมีความรู้ด้าน vb นิดเดียวเอง T_T อยากให้พี่อธิบายเกี่ยวกับการเขียนโปรแกรมนี้ได้ป่าวอ่าครับ เช่นเริ่มสร้างฟอร์ม คือผมไม่รู้จะสร้างอะไรยังไง
ซอดโค้ดก๊อบมาวางแล้วก็ไม่มีไรเกิดขึ้นเลยอ่ะครับ

ด้วยความนับถือครับ พี่แมงเม่า


Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long

Private mCapHwnd As Long

Private Const CONNECT As Long = 1034
Private Const DISCONNECT As Long = 1035
Private Const GET_FRAME As Long = 1084
Private Const COPY As Long = 1054

-----------------------Form Load------------
inten = 25
'The tolerance of recognizing the pixel change
Tolerance = 35

Tppx = Screen.TwipsPerPixelX
Tppy = Screen.TwipsPerPixelY

ReDim POn(640 / inten, 480 / inten)
ReDim P(640 / inten, 480 / inten)

STARTCAM
-------------------

------Sub STARTCAM---------
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 640, 480, Me.hwnd, 0)
DoEvents
SendMessage mCapHwnd, CONNECT, 0, 0
Timer1.Enabled = True

-------------------------------------

code ก็มีแค่นี้แหละ
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: จ. ตค. 31, 2005 10:24 am    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
ผมต้องการให้โมเด็มเล่นเสียง wav แบบ pcm เพื่อเวลาใครโทรเข้ามาแล้วได้ยินเสียงไฟล์ wav นั้นครับ โดยใช้ VB ไม่ทราบว่าจะต้องเขียนโค๊ดยังไงครับ พี่แมงเม้าพอจะให้ความรู้เรื่องนี้ได้รึเปล่าครับ

ปล.เคยลองทำตามในเวปนี้แล้วครับ โทรเข้ามาไม่ได้ยินเสียงครับจะมีเสียงทีลำโพงของคอมไม่ได้ยินที่โทรศัพท์ที่ใช้โทรครับ


ลองดู
------Module------
Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Declare Function sndStopSound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszNull As Long, ByVal uFlags As Long) As Long

Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_MEMORY = &H4
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10
Public Const SND_NOWAIT = &H2000
Public Const SND_FILENAME = &H20000
Public Const SND_RESOURCE = &H40004

----------Form----------------

Private Sub cmdBrowse_Click()
On Error GoTo Err
cdOpen.Filter = "Wav Files (*.wav)|*.wav"
cdOpen.ShowOpen
txtSound.Text = cdOpen.FileName
txtNumber.Text = ""
txtNumber.SetFocus
Err:
Exit Sub
End Sub

--------------------------
Private Sub cmdDial_Click()
On Error Resume Next
Dim cBuffer$
Dim WaitTime As Single, StartTime As Single, FinalTime As Single
WaitTime = 30
If cmdDial.Caption = "Dial" Then
cmdDial.Caption = "Hang up"
With MSComm1
.CommPort = 1
.Settings = "9600,N,8,1"
.InputLen = 0
.PortOpen = True
.Output = "ATDT" & txtNumber.Text & Chr$(13)
StartTime = Timer
cmdPlay.Enabled = True
Do
Me.Caption = Str(Int(Timer - StartTime))
DoEvents
Loop Until cmdDial.Caption = "Dial"
Me.Caption = "Dialer"
End With
Else
cmdDial.Caption = "Dial"
MSComm1.PortOpen = False
cmdPlay.Enabled = False
End If
End Sub

------------------------------
Private Sub cSoundPlay(cpath As Variant)
Variable = sndPlaySound(cpath, SND_ASYNC)
End Sub

-----------------------------
Private Sub cSoundStop()
Variable = sndStopSound(0, SND_ASYNC)
End Sub

----------------------------
Private Sub cmdPlay_Click()
On Error Resume Next
If cmdPlay.Caption = "Play Sound" Then
cSoundPlay txtSound.Text
cmdPlay.Caption = "Stop Sound"
Else
cSoundStop
cmdPlay.Caption = "Play Sound"
End If
End Sub
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: จ. ตค. 31, 2005 11:18 am    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คิดว่าใครเป็นนักดนตรีน่าจะชอบโปรแกรมนี้ เพราะรวมเอา piano + drum และ sound effect มากกว่า 1000(เท่า ๆ ที่ดูด้วยสายตา) ผมเองไม่ใช่นักดนตรีแต่เห็นแล้วก็ชอบมาก ว่าง ๆ จะเอาไปฝึก
โปรแกรมตัวนี้เขียนด้วย Visual basic 6.0 สงวนลิขสิทธ์โดย YAMAHA ผมก็ไม่กล้าจะไปดัดแปลง code เค้า เพื่อไม่ให้เป็นปัญหาผมจะไม่เอามา post ครับแต่จะ upload ตัว exe เป็นโปรแกรมที่เป็นประโยชน์ดีทีเดียว



http://www.geocities.com/ezy_math/YamahaPiano.zip
กลับไปข้างบน
Luxu_lary



เข้าร่วมเมื่อ: 14 สค. 2005
ตอบ: 2

ตอบตอบ: จ. ตค. 31, 2005 8:49 pm    ชื่อกระทู้: ปัญหาการเขียนโปรแกรมเชื่อมต่อHardware ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

สวัสดีค่ะ พี่แมงเม่า
หนูมีเรื่องอยากจะถามค่ะ คือหนูสร้างคีย์บอร์ดขึ้นมาใหม่ และกำหนดโคดให้ปุ่มแต่ละปุ่ม เช่น กดปุ่มที่1 ปุ่มที่1 จะส่งรหัสแอสกี่31 หรือเลข1 ออกมา เมื่อลองทำการติดต่อกับคอมโดยใช้ serial port โดยเปิดที่โปรแกรม HyperTerminal เมื่อกดปุ่ม1 บนหน้าจอจะแสดงเลข1 ออกมา เมื่อกดปุ่มที่เรากำหนดโค๊ดเป็น H41 ก็จะแสดง a ออกมา
แสดงว่าคีย์บอร์ดที่สร้างสามารถทำการติดต่อกับคอมได้

แต่พอลองนำมาเขียนVB ทำการติดต่อไม่สามารถทำการติดต่อได้ไม่รู้ว่าหนูเขียนโคดผิดหรือเปล่า รบกวนพี่แมงเม่า ช่วย เรื่องโคด เอาแค่ กดปุ่มคีย์บอร์ดเลข1 คีย์บอร์ดจะส่ง ascii"1"
แล้วโปรแกรมสามารถรับค่า ascii"1"เมื่อVB รับค่าascii"1"ได้แล้ว ก็ให้แสดงคำว่า "รับได้แล้ว" เมื่อกดปุ่มคีย์บอร์ดเลข5จะส่งascii"5" เมื่อเครื่องรับได้แสดงคำว่า "ไชโย"


ขอขอบคุณพี่แมงเม่าล่วงหน้ามากๆนะค่ะ
[/img]
กลับไปข้างบน
แสดงข้อมูลส่วนตัวของสมาชิก ส่งข่าวสารส่วนตัว ส่งอีเมล์
เด็กตาดำๆ
บุคคลทั่วไป





ตอบตอบ: อ. พย. 01, 2005 3:36 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

พี่แมงเม่าครับ Sub Start Cam นี่มันอยู่ใน Form ของอะไรครับ ของ Timer รึปล่าว แต่ผมลองทำดูไม่มีภาพของเว็บแคมอ่ะครับ มีแต่สีเทาเปล่าๆ ของ Form เรา -*-
แต่พอเปิดโปรแกรมของพี่ดูโปรแกรมก็ทำงานปกติดี เม็ดสีแดงก็ทำงานได้ดี เซฟภาพได้
อ่ะครับ
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: อ. พย. 01, 2005 7:09 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
สวัสดีค่ะ พี่แมงเม่า
หนูมีเรื่องอยากจะถามค่ะ คือหนูสร้างคีย์บอร์ดขึ้นมาใหม่ และกำหนดโคดให้ปุ่มแต่ละปุ่ม เช่น กดปุ่มที่1 ปุ่มที่1 จะส่งรหัสแอสกี่31 หรือเลข1 ออกมา เมื่อลองทำการติดต่อกับคอมโดยใช้ serial port โดยเปิดที่โปรแกรม HyperTerminal เมื่อกดปุ่ม1 บนหน้าจอจะแสดงเลข1 ออกมา เมื่อกดปุ่มที่เรากำหนดโค๊ดเป็น H41 ก็จะแสดง a ออกมา
แสดงว่าคีย์บอร์ดที่สร้างสามารถทำการติดต่อกับคอมได้

แต่พอลองนำมาเขียนVB ทำการติดต่อไม่สามารถทำการติดต่อได้ไม่รู้ว่าหนูเขียนโคดผิดหรือเปล่า รบกวนพี่แมงเม่า ช่วย เรื่องโคด เอาแค่ กดปุ่มคีย์บอร์ดเลข1 คีย์บอร์ดจะส่ง ascii"1"
แล้วโปรแกรมสามารถรับค่า ascii"1"เมื่อVB รับค่าascii"1"ได้แล้ว ก็ให้แสดงคำว่า "รับได้แล้ว" เมื่อกดปุ่มคีย์บอร์ดเลข5จะส่งascii"5" เมื่อเครื่องรับได้แสดงคำว่า "ไชโย"


อ่านแล้วก็งง ๆ นะ
1. กดปุ่มคีย์บอร์ดเลข1 คีย์บอร์ดจะส่ง ascii"1"

ใช้ GetKeyState หรือ GetAsyncKeyState มีข้อดีคือมันจะทำงานเสมอไม่ว่า window ไดจะ Active อยู่

'---------------Module--------------------
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Public Function GetNumLock() As Boolean

GetNumLock = CBool(GetKeyState(vbKeyNumlock) And 1)

End Function


'----------------Form------------------

KeyResult = GetAsyncKeyState(97)
If KeyResult = -32767 Then
If GetNumLock = True Then MsgBox "Key num1 was pressed", , "Pressed" 'ให้ check numlock ด้วย

End If

2. แล้วโปรแกรมสามารถรับค่า ascii"1"เมื่อVB รับค่าascii"1"ได้แล้ว ก็ให้แสดงคำว่า "รับได้แล้ว"


รับมาจากอะไรจากภายนอกหรือจากตัวมันเอง ลอง simulate โดยการ sendkeys เหมือนกับ 1 ถูกส่งมาจาก source ไดๆ

Private Sub Timer1_Timer()
SendKeys "1"
End Sub


Private Sub Form_KeyPress(KeyAscii As Integer)
Label1.Caption = KeyAscii
Label2.Caption = Chr(KeyAscii)
If Chr(KeyAscii) = 1 Then MsgBox "Num:" & Chr(KeyAscii) & "was detected", , "Detect"
Timer1.Enabled = False
End Sub
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: อ. พย. 01, 2005 7:11 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
พี่แมงเม่าครับ Sub Start Cam นี่มันอยู่ใน Form ของอะไรครับ ของ Timer รึปล่าว แต่ผมลองทำดูไม่มีภาพของเว็บแคมอ่ะครับ มีแต่สีเทาเปล่าๆ ของ Form เรา -*-
แต่พอเปิดโปรแกรมของพี่ดูโปรแกรมก็ทำงานปกติดี เม็ดสีแดงก็ทำงานได้ดี เซฟภาพได้
อ่ะครับ


Sub startcam =>>Timer1.enabled
กลับไปข้างบน
บุคคลทั่วไป






ตอบตอบ: อ. พย. 01, 2005 11:05 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

พี่แมงเม่า

ทำไม Vb มันถึงฟ้อง error'8005'port already open พอเราคลิ๊กที่debugมันจะมีแถบสีเหลืองขึ้นที่ mscomm.PortOpen = True หนูได้ต่อ serial port กับคอมแล้ว ทำการเชื่อมต่อสายที่ขา Tx กับ Rx

หนูลองtest การเชื่อมต่อโดยใช้ hyper terminal เมื่อพิมพ์อักขระตัวใด อักขระตัวนั้นก็จะแสดงผลออกบนจอ แต่พอมาลองกับ VB โดยใช้form และโปรแกรมของ
http://www.dcs.napier.ac.uk/~bill/pdf/Io_ch26.PDF

ตัวอย่าง programที่ 26.4
codeที่หนูพิมพ์คือ


Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
MSComm1.InputLen = 0
End Sub

Private Sub form_keypress(keyascii As Integer)
MSComm1.Output = keyascii
Text1.Text = keyascii
End Sub

Private Sub mscomm1_oncomm()
If (MSComm1.CommEvent = comEvReceive) Then
Text2.Text = MSComm1.Input
End If
End Sub
End Sub

Private Sub Command1_Click()
End
End Sub

ลองเอาโปรแกรมนี้ไปtest อีกเครื่องหนึ่งปรากฏว่ารันได้แต่เราลองพิมพ์ลงบน text1 มีตัวอักขระตามที่เราพิมพ์แต่ที่ text2 ไม่มีตัวอักขระ ขึ้นตาม text1
กลับไปข้างบน
เด็กตาดำๆ
บุคคลทั่วไป





ตอบตอบ: พ. พย. 02, 2005 1:29 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

โค้ดทั้งหมดเป็นแบบนี้เปล่าครับใน form ผมมี Timer ตัวเดียวเอง นอกนั้นเป็นสีเทาล้วน
ต้องมีอะไรใน form อีกหรือเปล่าครับ ไม่เห็นมีถาพเลยอ่า -*-

Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long

Private mCapHwnd As Long

Private Const CONNECT As Long = 1034
Private Const DISCONNECT As Long = 1035
Private Const GET_FRAME As Long = 1084
Private Const COPY As Long = 1054

Private Sub Form_Load()
inten = 25
'The tolerance of recognizing the pixel change
tolerance = 35

Tppx = Screen.TwipsPerPixelX
Tppy = Screen.TwipsPerPixelY

ReDim POn(640 / inten, 480 / inten)
ReDim P(640 / inten, 480 / inten)
End Sub

Private Sub Timer1_Timer()
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 640, 480, Me.hwnd, 0)
DoEvents
SendMessage mCapHwnd, CONNECT, 0, 0
Timer1.Enabled = True
End Sub
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: พ. พย. 02, 2005 7:15 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

จำได้ว่า post ไป 2 ครั้ง(ครั้งแรกลืมประกาศตัวแปล)ให้เอาทั้งสองมารวมกัน
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: พ. พย. 02, 2005 7:29 pm    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

คำพูด:
ทำไม Vb มันถึงฟ้อง error'8005'port already open พอเราคลิ๊กที่debugมันจะมีแถบสีเหลืองขึ้นที่ mscomm.PortOpen = True หนูได้ต่อ serial port กับคอมแล้ว ทำการเชื่อมต่อสายที่ขา Tx กับ Rx


ผมลองแล้วใช้ได้ 100% ให้ jump ขา Tx กับ Rx เข้าด้วยกันด้วย

-----Initialize-----------

Private Sub Form_Load()
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 1
MSComm1.PortOpen = True
MSComm1.RThreshold = 1

End Sub

------รับค่า variant---------

Private Sub MSComm1_OnComm()
Dim StrData As Variant
StrData = MSComm1.Input
RXText.Text = StrData
End Sub

------ส่งค่า-----------------
Private Sub SendKey_Click()
MSComm1.Output = TextSEND.Text
End Sub


Embarassed Embarassed
กลับไปข้างบน
เด็กตาดำๆ
บุคคลทั่วไป





ตอบตอบ: พฤ. พย. 03, 2005 4:45 am    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

พี่แมงเม่าครับ สงสัยผมต้องหน้าด้านขอตัวโปรแกรมที่พี่เขียนที่เป็นซอดโค้ดตัว vb แล้วอ่าครับ ผมนั่งทำตามพี่บอก จะตี 5 แล้ว ยังไม่ได้เลย T_T ภาพไม่ขึ้น รันได้แต่ไหงไม่มีภาพ
แก้ไปแก้มา จนไม่ไหวแล้วอ่าพี่ครับ จึงอยากขอตัวโค้ดที่พี่เขียนเอาไว้อ่ะครับ มารันดูใน vb ว่าผมพลาดตรงไหน -/\- ขอบคุณค้าบ
กลับไปข้างบน
แมงเม่า
บุคคลทั่วไป





ตอบตอบ: พฤ. พย. 03, 2005 10:34 am    ชื่อกระทู้: ตอบกระทู้ด้วยเครื่องหมายคำพูด(quote) แก้ไข/ลบคำตอบนี้ ลบคำตอบนี้ แสดง IP

เอาอีเมลล์มาจะส่งให้
กลับไปข้างบน