PC机与多个单片机组成的232多机通信,pc循环采集各个单片机的数据,通信协议该如何写?上位机vb程序该如何
能发个例子吗?我现在能实现pc机和单个单片机进行通信,关于多个单片机和pc机的协议,不是很了解?谢谢各位大大...
能发个例子吗?我现在能实现pc机和单个单片机进行通信 ,关于多个单片机和pc机的协议,不是很了解?谢谢各位大大
展开
3个回答
展开全部
1.如果单片机之间不用通信的话,可以所有单片机的接收线并联,发送线也并联,各发送线要接一个缓冲电阻防止发送冲突,通信原理是:PC发有地址的数据,所有单片机接收到数据包后比较地址是否和本身地址相同,每次只能有一个是相同的,然后此单片机发送数据,和主机通信。
另外只有发送的单片机才把发送线端口置成强推拉方式,平时则为悬空或弱上拉方式以缓解发送单片机的驱动压力。
2.是用双串口单片机,将多个单片机串口两两级联起来,最后和PC连接,通信原理是PC机发送带有单片机地址的数据时从第一个一直往下传直到和地址相同的单片机结束,当地址不同时,就转发上一级单片机传下来的数据。
3..用可以并接多个端子的通信协议方式,然后转成RS232格式给单片机。这个协议不是232的,因为232不能接多个且有相互通信功能,
另外只有发送的单片机才把发送线端口置成强推拉方式,平时则为悬空或弱上拉方式以缓解发送单片机的驱动压力。
2.是用双串口单片机,将多个单片机串口两两级联起来,最后和PC连接,通信原理是PC机发送带有单片机地址的数据时从第一个一直往下传直到和地址相同的单片机结束,当地址不同时,就转发上一级单片机传下来的数据。
3..用可以并接多个端子的通信协议方式,然后转成RS232格式给单片机。这个协议不是232的,因为232不能接多个且有相互通信功能,
展开全部
232多机通信协议主要有地址码、控制码、数据码和校验值组成,PC机和单片机都必须具有相同的波特率和协议,另外注意232的通信距离不能超过15m,另外还要有一些防冲突设计,建议多机通信采用485总线,实现起来比较简单,而且可靠性也好,通信距离也比较远
VB程序,在窗体里加一个MSCOMM控件,控件设置如下:
Private Sub form_Load()
With Comboduankou
.AddItem "COM1"
.AddItem "COM2"
.AddItem "COM3"
.AddItem "COM4"
.AddItem "COM5"
.AddItem "COM6"
.ListIndex = 0
End With
MSComm.CommPort = Comboduankou.ListIndex + 1
MSComm.Settings = "9600,N,8,1"
MSComm.InputMode = comInputModeText
'MSComm.InputMode = comInputModeBinary
MSComm.RThreshold = 9
MSComm.SThreshold = 1
If MSComm.PortOpen = False Then
MSComm.PortOpen = True
End If
If MSComm.PortOpen = True Then
Shape1.BorderColor = vbRed
Else
Shape1.BorderColor = vbGreen
End If
MsgBox "串口设定:传输速率9600,校验位N,数据位8,停止位1,请确认!"
Option1.Value = True
End Sub
//计算机接收程序如下:
Private Sub MSComm_OnComm()
Select Case MSComm.CommEvent
Case comEvReceive
MSComm.InputMode = 0
'MSComm.InputMode = 1
buffer = Str(MSComm.Input)
End Select
If buffer <> vbNullString Then
Textreceive = Textreceive & buffer '& Chr(13) & Chr(10)
End If
End Sub
你参考一下
VB程序,在窗体里加一个MSCOMM控件,控件设置如下:
Private Sub form_Load()
With Comboduankou
.AddItem "COM1"
.AddItem "COM2"
.AddItem "COM3"
.AddItem "COM4"
.AddItem "COM5"
.AddItem "COM6"
.ListIndex = 0
End With
MSComm.CommPort = Comboduankou.ListIndex + 1
MSComm.Settings = "9600,N,8,1"
MSComm.InputMode = comInputModeText
'MSComm.InputMode = comInputModeBinary
MSComm.RThreshold = 9
MSComm.SThreshold = 1
If MSComm.PortOpen = False Then
MSComm.PortOpen = True
End If
If MSComm.PortOpen = True Then
Shape1.BorderColor = vbRed
Else
Shape1.BorderColor = vbGreen
End If
MsgBox "串口设定:传输速率9600,校验位N,数据位8,停止位1,请确认!"
Option1.Value = True
End Sub
//计算机接收程序如下:
Private Sub MSComm_OnComm()
Select Case MSComm.CommEvent
Case comEvReceive
MSComm.InputMode = 0
'MSComm.InputMode = 1
buffer = Str(MSComm.Input)
End Select
If buffer <> vbNullString Then
Textreceive = Textreceive & buffer '& Chr(13) & Chr(10)
End If
End Sub
你参考一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参考Modbus协议,多机通讯。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询