vb串口通讯设置问题

vb串口通讯设置问题,第1张

是不是VB接收数据时候有问题你使用的方法是事件驱动吧Main_MSCommRThreshold =1 ' 每X个字符到接收缓冲

你可以尝试改一下Main_MSCommRThreshold这个值,MSDN上面也说了,如果你传送的数据是定长的,那用事件驱动就不会有问题,但是数据不定长,就有时候会出问题了

'不清楚的地方请百度HI我,添加一个按钮和一个mscomm控件,然后粘贴代码

Dim recive(1 To 5) As Byte

Dim send() As Byte

Private Sub Command1_Click()

MSComm1CommPort = 1

' 9600 波特,无奇偶校验,8 位数据,一个停止位。

MSComm1Settings = "9600,N,8,1"

' 当输入占用时,

' 告诉控件读入整个缓冲区。

MSComm1InputLen = 0

' 打开端口。

MSComm1PortOpen = True

MSComm1InputMode = comInputModeBinary'二进制方式发送

MSComm1Output = recive' 发送数据

Do Until MSComm1InBufferCount >= 5'等待数据

DoEvents

Loop

send = MSComm1Input'接受

Dim i As Integer

Dim s As String

For i = 0 To UBound(send)

s = s & Hex(send(i)) & " "

Next i

MsgBox "收到5字节:" & s'显示

End Sub

Private Sub Form_Load()

recive(1) = &H41

recive(2) = &H42

recive(3) = &H43

recive(4) = &H44

recive(5) = &H45

End Sub

VB用MSCOMM控件与单片机经RS232串口实现通讯。一方为主发,一方为应答。规定好通讯格式。VB程序利用MSCOMM的ONCOMM事件进行接收。

Output

属性示例

下面的例子说明如何将用户键入的每一个字符送到串行端口:

Private

Sub

Form_KeyPress

(KeyAscii

As

Integer)

Dim

Buffer

as

Variant

'

设置并打开串口

MSComm1CommPort

=

1

MSComm1PortOpen

=

True

Buffer

=

Chr$(KeyAscii)

MSComm1Output

=

Buffer

End

Sub

同样在串口打开时,给MSCOMM的属性Output赋值,就向串口写入数据

串口传送数据实质是传送ASCII码,对于数值数据的处理:通常以16位二进制数字传递,而小数点不传递,仅乘一定倍率来实现同时16位二进制数字按两个8位(ASCII码值)输送,上位机通过程序代码处理成10进制数

串口通信中数制转换必须相当重视。

详细请参阅MSDN和人民邮电出版社的"UISUAL

BASIC

串口通讯工程开发实例导航"一书其中有详细介绍重点第一章“串口调试精灵”。其代码修改后可用作通讯模块。

这个需要分步来完成

1、实现单片机串口通讯

2、编写VB程序,添加串口控件,实现VB与单片机串口通讯

3、写单片机IO驱动,实现脉冲输出

4、VB发数据给单片机,实现脉冲数量和频率控制

5、更详细的可以私信我完成

Private Sub Command1_Click()

If Len(Text1Text) = 0 Then Exit Sub

Dim x, l, i As Integer

Dim SendByte() As Byte

l = Len(Text1Text) \ 2

ReDim SendByte(l - 1)

For i = 0 To l - 1

SendByte(i) = "&h" & Mid(Text1Text, i 2 + 1, 2)

Next

If MSComm1PortOpen = True Then MSComm1Output = SendByte

End Sub

Private Sub Form_Load()

Dim x, l, i As Integer

Text1Text = ""

Text2Text = ""

Text3Text = 1

Text4Text = ""

MSComm1Settings = "9600,n,8,1"

MSComm1CommPort = Text3Text '通讯端口号,根据text3中所输入的内容

MSComm1NullDiscard = False

MSComm1RThreshold = 1

MSComm1InputMode = 1

MSComm1PortOpen = True

End Sub

部分代码作了修改。

对你三点疑问的看法:

1)运行时,按第一次command1能接发数据,第二次再按就出错了!!

出错是串口重复打开。

2)接收串口的数据是不断变化,我用了定时器但数据都不会改变,为什么呢??

既然使用ONCOMM事件就不需使用定时器

3)如何能连续接发数据,那怎样能接收完一帧命令后,再在另下一行接收第二帧,不要一帧接一帧,每一帧都独立的占一行??

这些须依据你的通信协议设计。

太阳雨多年积攒极其珍贵的原创VB串口通信技术资料V20

VB串口通信编程源码206个,多种行业多种应用

VB串口通信技术文章160多篇,详尽地对VB串口通信的诠释

VB串口通信电子书籍16部,工业通信名家著作,经典细致

VB串口通信控件16个,简化串口通信编码,提高开发效率

VB串口调试工具80个,应用于各种串口调试与校验计算

VB串口视频教程46个,两套完整视频教程,讲解直观,更快掌握

程序员发展类文章和书籍12部,帮助您的成长,健康和发展

超级赠品一:OSI网络模型教程48M

超级赠品二:串口硬件层知识大全资料包24M

你在淘宝搜索“太阳雨VB串口资料”就可以找到,希望可以帮助到你。

以上就是关于vb串口通讯设置问题全部的内容,包括:vb串口通讯设置问题、用VB的mscomm控件串口通信,怎么发十六进制、向串口写数据 VB 源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9970184.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存