
可否修改从机的程序主机与从机建立一套应答和等待信号的机制就可以了
从机没有地址,是不能区分的,也不可能区分
这里有两种方法,
第一种是:从机程序都一样,用人手对从机编号
从机都收到主机发送的信号,编号对应的从机才回应
第二种是:从机程序不一样,一开始就烧进带编号的程序
我做过两个串口的程序 有时候数据非常快 我觉得5ms后仍未接收到下一个字节数据,此时开始处理缓冲区中的数据这种方法就不是很好 在线程很多的情况下 timer不好做 为什么不换换串口处理的方式呢 比如说while(bytetoread>)时每次处理一定数量 或者判断包头包尾什么的
在VB中有提供一个串口通信控件,为何还需要要用Pcomm pro呢?此控件需要在“工程---组件 ”里面添加。下面给你说说VB中的MSCOMM 控件
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm 控件提供下列两种处理通讯的方式:
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。
在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
每个使用的 MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。可以在 Windows“控制面板”中改变端口地址和中断地址。
尽管 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。
属性 描述
CommPort 设置并返回通讯端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
Input 从接收缓冲区返回和删除字符。
Output 向传输缓冲区写一个字符串。
下面这个简单的例子演示了用调制解调器进行基本的串行通讯:
Private Sub Form_Load ()
' 保存输入子串的缓冲区
Dim Instring As String
' 使用 COM1。
MSComm1CommPort = 1
' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1Settings = "9600,N,8,1"
' 当输入占用时,
' 告诉控件读入整个缓冲区。
MSComm1InputLen = 0
' 打开端口。
MSComm1PortOpen = True
' 将 attention 命令送到调制解调器。
MSComm1Output = "ATV1Q0" & Chr$(13) ' 确保
' 调制解调器以"OK"响应。
' 等待数据返回到串行端口。
Do
DoEvents
Buffer$ = Buffer$ & MSComm1Input
Loop Until InStr(Buffer$, "OK" & vbCRLF)
' 从串行端口读 "OK" 响应。
' 关闭串行端口。
MSComm1PortOpen = False
End Sub
1)用51即可。每台从机设置固定地址。
2)用max485,485总线连接。(用232也行)
3)自定协议,主机轮询发出指令,应答机接命令后,按协议格式返回AD结果。主机显示。
直接把所有从机的TXD链接到主机的RXD,但是,每次只能允许一个从机发送给主机。
所有,必须采用轮寻模式,也就是主机主从发一条命令给所有从机,命令其中一个从机发送数据给主机,从机绝对不允许随意主动给主机发送数据。
PS:这种才叫问题,那些“跪求,给我某某程序等等的狗屁问题,直接给钱才能回到”
不可以的。
1、在调试程序时,可以通过虚拟串口来进行测试。
2、生成一对串口,而且相互连接,形成一个串口通信线路。
3、这样
A程序打开一个
端口1
读,B程序打开另一个
端口2
写。
以上就是关于单片机串口多机通讯问题,一主多从,各个从机硬件、程序都一样,请问怎么实现通讯全部的内容,包括:单片机串口多机通讯问题,一主多从,各个从机硬件、程序都一样,请问怎么实现通讯、C# 中如何做多线程的串口通讯、vb中如何用pcomm pro 实现多串口通信等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)