vb串口通信如何接收单片机发过来的两字节数据
我的单片机发送程序是if(a=='r'){uart_send_data(temperature>>8);//发送数据uart_send_data(temperature)...
我的单片机发送程序是
if(a=='r')
{uart_send_data(temperature>>8); //发送数据
uart_send_data(temperature);
a=0;}
}
发送的是温度数据,分为高八位和第八位依次发送
在vb中用什么接收?数组?字符?接收之后我还要进行进制转换 展开
if(a=='r')
{uart_send_data(temperature>>8); //发送数据
uart_send_data(temperature);
a=0;}
}
发送的是温度数据,分为高八位和第八位依次发送
在vb中用什么接收?数组?字符?接收之后我还要进行进制转换 展开
2个回答
推荐于2017-09-11 · 知道合伙人软件行家
关注
展开全部
VB6.0可设置MsComm控件的RThreshold 属性为2,通过OnComm 事件接收来自单片机的两字节数据。
如果两字节数据是二进制数据需要设置InputMode 属性为comInputModeBinary。
如果两字节数据是字符数据需要设置InputMode 属性为comInputModeText。
RThreshold 属性,在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。
OnComm 事件,无论何时当 CommEvent 属性的值变化时,就产生 OnComm 事件,标志发生了一个通讯事件或一个错误。
InputMode 属性。
设置或返回 Input 属性取回的数据的类型。
如果两字节数据是二进制数据需要设置InputMode 属性为comInputModeBinary。
如果两字节数据是字符数据需要设置InputMode 属性为comInputModeText。
RThreshold 属性,在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。
OnComm 事件,无论何时当 CommEvent 属性的值变化时,就产生 OnComm 事件,标志发生了一个通讯事件或一个错误。
InputMode 属性。
设置或返回 Input 属性取回的数据的类型。
展开全部
VB里有专用控件用来接收和发送数据块。和C语言不一样。
你可以参照这个回答来操作,
http://zhidao.baidu.com/link?url=_Krb7jkWk0r4WLn3sqQgI1mDLGLnU8Qeu9rexk1loNHC1Gh-FeSisTS_5Ec8lnQIAzV8NRiP26ZfhYc3M7kpBK
启用该控件,然后再用该控件的相关方法和事件进行编程。
这个控件会在系统中开启一个接收发送内存缓冲区。然后用相关VB代码可以读取和写入。
你可以参照这个回答来操作,
http://zhidao.baidu.com/link?url=_Krb7jkWk0r4WLn3sqQgI1mDLGLnU8Qeu9rexk1loNHC1Gh-FeSisTS_5Ec8lnQIAzV8NRiP26ZfhYc3M7kpBK
启用该控件,然后再用该控件的相关方法和事件进行编程。
这个控件会在系统中开启一个接收发送内存缓冲区。然后用相关VB代码可以读取和写入。
追问
我知道用mscomm控件,我的vb程序主要部分是
Private Sub timer1_timer()
Dim Inbyte() As Byte
Inbyte = MSComm1.Input//接收单片机发来的数据,但是在这一步inbyte什么都收不到, 而我用串口助手试了一下能够收到两个字节的数据,我之前试过一个字节的数据PC能够收到
追答
你没搞清数据长度和存储区的关系。你不需要加 AS BYTE,直接DIM一个存储区就可以了。VB会自动分配,只是取数据的时候要声明变量类型。还有你要确定控件是打开的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询