问一个关于51单片机与PC串口通信的程序问题

如果上位机发来的是一个字符数组,比如说包含两个字符VB上位机:PrivateSubForm_Load()MSComm1.PortOpen=TrueMSComm1.Inpu... 如果上位机发来的是一个字符数组,比如说包含两个字符
VB上位机:
Private Sub Form_Load()
MSComm1.PortOpen = True
MSComm1.InputMode = comInputModeBinary
End Sub

Private Sub Command3_Click()
Dim sentnum(0 To 3) As Integer
Dim out(0 To 3) As Byte
sentnum(0) = Val(txtsend.Text)
out(0) = CByte(sentnum(0))
out(1) = CByte(sentnum(1))
out(2) = CByte(sentnum(2))
out(3) = CByte(sentnum(3))
MSComm1.OutBufferCount = 0
MSComm1.Output=out()
End Sub
请问下位机应该怎么编写接收程序呢。
我现在的下位机只能接受发来的第一个字符,之后的三个就都接受不了
if(RI==1) //查询收到数据
{ RI=0;
Rxbuf=SBUF;}
请问怎样接受后面的三个字符
我试过一楼的做法,好像还是不行。
请问一楼需不需要每次接收前都要RI=0
if(RI==1)
{RI=0;Rxbuf[i++]=SBUF;if (i>3) i=0;}
是否这样
展开
 我来答
迪凯特科技(北京)有限公司_ 2025-01-03
展开全部
串口对通信速率没有明确的限制,但由于是异步通信,需要通信的双方约定使用同样的速率,实际具体使用时以保证通信双方可以接受为准。 比如,单片机与PC进行通信,PC端可以允许的波特率是一些特定的数字,比如300,600,1200,9600,115200,那么单片机也必须在这些数字中选择.
sanjinluo
2009-05-09 · TA获得超过4715个赞
知道大有可为答主
回答量:3402
采纳率:0%
帮助的人:2410万
展开全部
你定义一个RXBUF[4]的数组,然后用再用一个全局变量i,每接收一次RXBUF[i++]=SBUF;i>3就i=0
迪凯特科技(北京)有限公司_
2025-01-03 广告
单片机串口通信数据丢失的原因可能如下:1. 按键通过串口发送对应命令,第一次按按键串口发送的指令正确且能把数据正确的显示出来,在第二次按按键串口发送的指令出现丢失的状况,可能是因为串口通信的波特率设置不正确。2. 如果单片机和外部设备的波特... 点击进入详情页
本回答由迪凯特科技(北京)有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式