(1)信号:RS232C信号或RS422信号,
(2)波特率:300/600/900/1200/2400/4800 默认为1200
(3)数据位:所有数据均为ASCII码,每组数据由10位组成,第一位为起始位,第十位为停止位,中间8位为数据位。
(4)地址范围:26个地址(A~Z)
(5)以连续发送方式时,数据以ASCII码方式输出,每帧数据共有9组组成(包括小数点).数据传送先低位后高位,每帧数据间有一组是分隔符“=”,重为89.03,数据连续发送30.98000=30.98000=......... 我的程序如下请高手帮看看:Private Sub Command1_Click() '开始接收
Label1.Caption = ""
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1 '串口号,
MSComm1.Settings = "1200,n,8,1" '串口的属性
MSComm1.InputLen = 0 '接收缓冲区的大小
MSComm1.RThreshold = 10
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True '打开通信串口
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End If
End SubPrivate Sub MSComm1_OnComm()
Dim k, i, j As Integer
Dim myarray() As Byte
Dim strss As String Select Case MSComm1.CommEvent
Case comEvReceive
k = MSComm1.InBufferCount
If k = 0 Then
Exit Sub
End If
ReDim myarray(k - 1)
myarray = MSComm1.Input
j = 0
For i = 0 To UBound(myarray) ''''''每一组为10 个字节
j = j + 1
strss = strss & chr(myarray(i))
If j = 10 Then
Label1.Caption =strss
strss = ""
j = 0
End If
Next
Case comEvSend
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
End Select
End SubPrivate Sub Command5_Click() '停止接收
Label1.Caption =strss
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub
(2)波特率:300/600/900/1200/2400/4800 默认为1200
(3)数据位:所有数据均为ASCII码,每组数据由10位组成,第一位为起始位,第十位为停止位,中间8位为数据位。
(4)地址范围:26个地址(A~Z)
(5)以连续发送方式时,数据以ASCII码方式输出,每帧数据共有9组组成(包括小数点).数据传送先低位后高位,每帧数据间有一组是分隔符“=”,重为89.03,数据连续发送30.98000=30.98000=......... 我的程序如下请高手帮看看:Private Sub Command1_Click() '开始接收
Label1.Caption = ""
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1 '串口号,
MSComm1.Settings = "1200,n,8,1" '串口的属性
MSComm1.InputLen = 0 '接收缓冲区的大小
MSComm1.RThreshold = 10
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True '打开通信串口
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End If
End SubPrivate Sub MSComm1_OnComm()
Dim k, i, j As Integer
Dim myarray() As Byte
Dim strss As String Select Case MSComm1.CommEvent
Case comEvReceive
k = MSComm1.InBufferCount
If k = 0 Then
Exit Sub
End If
ReDim myarray(k - 1)
myarray = MSComm1.Input
j = 0
For i = 0 To UBound(myarray) ''''''每一组为10 个字节
j = j + 1
strss = strss & chr(myarray(i))
If j = 10 Then
Label1.Caption =strss
strss = ""
j = 0
End If
Next
Case comEvSend
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
End Select
End SubPrivate Sub Command5_Click() '停止接收
Label1.Caption =strss
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub
解决方案 »
- 这是vb的bug吗? msgbox int(1.2*10),第一次结果是12,以后结果是11?
- 使用ado连接数据库,字段赋值时出错:multiple-step operation generated errors.check each status value.
- 用VB开发的对EXCEL表内进行计算的错误
- 请教条码扫描器的解决办法
- vb多线程如何传递参数?
- 有关打包问题~~打包时我需要把那些文件添加进去?
- 请问,怎样动态生成多层的弹出式菜单?用菜单数组只能有一层。望高手指点!
- 上学了,不能经常来了,散100分,谢谢帮助过我和我曾帮助的人(还有问题)。
- 请教各位大侠,关于数据库连接的问题?
- ★★重赏★★:哪里有下载用vb编写的asp图形组件的源代码
- VB打印问题
- 如何获取网卡的数量,及检测速度是100MB还是1000MB
接收代码中多余部分应删除,已注释掉.
数据连续发送是30.98000=30.98000=.........
那么MSComm1.RThreshold = 9
而不是MSComm1.RThreshold = 10
我记得已回复你的另一贴,不知道你还在那方面存在疑问?
Option Explicit
Dim strss As StringPrivate Sub Command1_Click() '开始接收
Label1.Caption = " "
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1 '串口号,
MSComm1.Settings = "9600,n,8,1 " '串口的属性
MSComm1.InputLen = 0
MSComm1.RThreshold = 9
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True '打开通信串口
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End If
Print MSComm1.PortOpen
End SubPrivate Sub MSComm1_OnComm()
Dim k, i, j As Integer
'Dim myarray() As Byte既然以文本模式接收,则无须用Byte数组来获取数据
Select Case MSComm1.CommEvent
Case comEvReceive
k = MSComm1.InBufferCount
If k = 0 Then
Exit Sub
End If
ReDim myarray(k - 1)
strss = MSComm1.Input
'j = 0
'For i = 0 To UBound(myarray) ' ' ' ' ' '每一组为10 个字节
'j = j + 1
'strss = strss & Chr(myarray(i))
'If j = 10 Then
Label1.Caption = Val(Mid(StrReverse(strss), 2, 8))
strss = ""
'j = 0
'End If
'Next
Case comEvSend
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
End Select
End SubPrivate Sub Command5_Click() '停止接收
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub