VB串口通信问题
发布网友
发布时间:2022-05-01 21:19
我来回答
共2个回答
热心网友
时间:2022-06-23 16:01
需要错误重传机制,提供一段代码供参考:
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private fACK As Boolean
Private Sub Command1_Click()
Call Test
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
End Sub
Public Function Test() As Boolean
Dim errCount As Integer
Send_Command:
'--------------------------------超时处理
Dim msCount As Long
msCount = 500 + GetTickCount '500ms超时(注意不是很准,通过实际调试来确定)
Call 模拟MSComm接收到数据
While GetTickCount < msCount '等待ACK(接收下位机反馈,500ms为限)
DoEvents
Sleep 1 '降低CPU使用率
If fACK = True Then
Test = m_ReturnStr
Test = True '成功出口
Exit Function
End If
Wend
'--------------------------------------
errCount = errCount + 1
Debug.Print "发送超时"; errCount & "次"
If errCount >= 3 Then '定义允许错误重传的次数
errCount = 0
GoTo errHandle
End If
GoTo Send_Command '超时重传
'--------------------------------------
errHandle:
Test = False '失败出口
End Function
Private Sub Timer1_Timer()
fACK = True
End Sub
Private Sub 模拟MSComm接收到数据()
fACK = False
Timer1.Interval = 2000 '1s钟后接收到数据
Timer1.Enabled = True
End Sub
热心网友
时间:2022-06-23 16:01
发送数据,对方接收后反馈一个接受成功的信息
发送方 收到接受成功 的信息,再 发送后续数据
祝你顺利
VBA 串口通讯问题
1 mscomm.vbx通信控件描述 mscomm.vbx通信控件可直接从vb的toolbox中加入窗体form,即可用其进行通信。若toolbox中无此控件,则用tools的custom controls 将mscomm.vbx从windows的system子目录中加入vb的toolbox中。1.1 通信方式 mscomm.vbx有2种不同的方式来处理和解决各类通信软件的开发和设计问题 1...
vb 串口通信问题!
引导符或结束符有可能是文本无法显示的ASCII码,在ASCII码值(10进制)为0-127范围内用CHR函数处理,例:ML = Chr(13) & "1234" & "ABCD" & Chr(27)其中Chr(13)或Chr(27)等文本无法显示。串口传送数据实质是传送ASCII码,如是8位二进制数据,其ASCII码值(10进制)为0-255。用二进制表示为...
VB串口通讯问题
1,MSComm1.InputMode=0表示以文本方式接受,=1表示以二进制方式接受,你根据你的实际情况确定,一般=0 2.MSComm1.Setting属性的设置问题,如果VB中设置的波特率和单片机的波特率不一致,接受的数据基本上就会不正确 3,在1中,如果以文本方式,0x90,和0x80被当作ASCii码从51中往上传,在VB接收到的...
关于串口通信,用VB编的。发送正常,接收的数据总是不对,数据中多了几...
这是因为VB使用的是Unicode编码,在这种编码模式下,任何字符都是占用两个字节的(换句话说不但汉字占用两个字节,连半角的英文字母、数字、符号等也是两个字节的),比如 "abc1"这个字符串的ASCII码(16进制)在ANSI编码下为“61 62 63 31”,但在Unicode中则变为“61 00 62 00 63 00 31 00”。
vb 利用serialport做串口通信,如何实现收到一帧数据后,延时100毫秒左右...
'设置RThreshold属性一帐长度触发 Private Sub MSComm1_OnComm()Select Case MSComm1.CommEvent '判断MSComm1通信事件 Case comEvSend Case comEvReceive '表接收事件 '在触发中加延时函数,和发送数据 Sleep(1000)‘要换成延进函数 MSComm1.Output ="数据"'思路如此,接收发送数据都要做具体处理 ...
用VB写了个串口通信程序,与伺服电动缸通信,但是不论发送什么命令都原样...
第二,排除了串口线的问题后,你用串口调试器给伺服电动缸发送指令,如果也原样返回,那说明要么你指令不对,要么伺服电动缸有问题。如果串口调试器发给伺服电动缸指令后动作正常,那说明是你软件编写有问题。就这样一个一个问题排除。串口通讯还是比较简单的,只要把我好步骤。纯手打,希望采纳 ...
用VBA可以进行串口通讯吗?如果可以的话,该怎么实现,多谢大侠赐教!!_百...
一.将两台PC机串行口的连接(如图)二.建立VB工程1.在VB窗体添加控件(如图)2.VB编程:'PC机串行口用命令按钮启动接收/发送VB程序 Private Sub Form_Load() MSComm1.PortOpen = True '开启通信控件的端口End Sub '点击“发送”命令按钮发送数据Private Sub Command1_Click() MSComm1.Output ...
为什么在vb串口通信中我接收到的数据时乱码呢
以我的经验来看,乱码必定是波特率设置不对,你的硬件的波特率不是9600,你试试别的,肯定奏效。Comm1.Settings = "19200,n,8,1" '...设置通讯参数 或者 Comm1.Settings = "1200,n,8,1" '...设置通讯参数
急!关于VB编程用于串口通信
自己写个协议,VB向下发送回调数据命令,单片机收到后将数据发送给VB。这样你就可以在VB中第隔一段时间向单片机发一次命令。
求助:vb串口通信接收字符串
在VB6中,用MSCOMM控件进行串口通讯,定义一个变量strIn,打开串口后,用语句 strIn=Mscomm1.Instring 读取串口缓冲区内容即可。strIn应该是一个数组,每个数组的内容即为接收到的字符的ASCII码。strIn就是接收到的字符串。