关于vb MSComm控件 发送数据的问题
是这样的,我写了一个vb的小程序,有两个textbox,一个Commanbutton,一个MSComm.要实现的功能是向串口发送数据和接收数据.可是我发现我发送的数据居然...
是这样的,我写了一个vb的小程序,有两个textbox,一个Commanbutton,一个MSComm.
要实现的功能是向串口发送数据和接收数据.
可是我发现我发送的数据居然是ASCII的数据.......
例如,我在textbox中键入"1"的时候,按发送按钮,它发送的居然是"1"的ASCll码49......
而且键入"11"的时候,按发送,它居然发送的是"1".
现在我想实现的是在textbox里输入例如是11,按发送按钮的时候,它发送的就是11这个数值,该怎么做? 展开
要实现的功能是向串口发送数据和接收数据.
可是我发现我发送的数据居然是ASCII的数据.......
例如,我在textbox中键入"1"的时候,按发送按钮,它发送的居然是"1"的ASCll码49......
而且键入"11"的时候,按发送,它居然发送的是"1".
现在我想实现的是在textbox里输入例如是11,按发送按钮的时候,它发送的就是11这个数值,该怎么做? 展开
2个回答
展开全部
Option Explicit
Dim CmdFlag As Boolean
Dim sum As Long
Dim sendsum As Long
Private Sub Command1_Click()
If CmdFlag Then
Command1.Caption = "发送"
Timer1.Enabled = False
Else
Command1.Caption = "停止"
Timer1.Enabled = True
End If
CmdFlag = Not CmdFlag
End Sub
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 1
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
Timer1.Interval = 200
Timer1.Enabled = False
sum = 224
Command1.Caption = "发送"
MSComm1.SThreshold = 1
End Sub
Private Sub MSComm1_OnComm()
Dim buffer() As Byte
Dim i As Long
Select Case MSComm1.CommEvent
Case 1
sendsum = sendsum + 1
Debug.Print sendsum
Case 2
buffer = MSComm1.Input
If UBound(buffer) = 3 Then
Text1 = Hex(sum - 1)
Command1_Click
End If
End Select
End Sub
Private Sub Timer1_Timer()
Dim sj(0) As Byte
sj(0) = sum
MSComm1.Output = sj
sum = sum + 1
If sum > 255 Then sum = 224
End Sub
补充:对于串口通信不要设置断点来调试,那测试不准.也不要在代码中使用MSGBOX,它会中断通信.
LZ再看上述已经修改代码,设置
MSComm1.SThreshold = 1
sendsum是产生ComEvSend事件的次数.
Dim CmdFlag As Boolean
Dim sum As Long
Dim sendsum As Long
Private Sub Command1_Click()
If CmdFlag Then
Command1.Caption = "发送"
Timer1.Enabled = False
Else
Command1.Caption = "停止"
Timer1.Enabled = True
End If
CmdFlag = Not CmdFlag
End Sub
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 1
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
Timer1.Interval = 200
Timer1.Enabled = False
sum = 224
Command1.Caption = "发送"
MSComm1.SThreshold = 1
End Sub
Private Sub MSComm1_OnComm()
Dim buffer() As Byte
Dim i As Long
Select Case MSComm1.CommEvent
Case 1
sendsum = sendsum + 1
Debug.Print sendsum
Case 2
buffer = MSComm1.Input
If UBound(buffer) = 3 Then
Text1 = Hex(sum - 1)
Command1_Click
End If
End Select
End Sub
Private Sub Timer1_Timer()
Dim sj(0) As Byte
sj(0) = sum
MSComm1.Output = sj
sum = sum + 1
If sum > 255 Then sum = 224
End Sub
补充:对于串口通信不要设置断点来调试,那测试不准.也不要在代码中使用MSGBOX,它会中断通信.
LZ再看上述已经修改代码,设置
MSComm1.SThreshold = 1
sendsum是产生ComEvSend事件的次数.
追问
非常抱歉,我是新手,可否再加注释,我会继续加分的!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询