刚刚学习上位机 ,问几个基础的问题.我的程序是通过串口从下位机读取数据。
最终想要的数据是整型然后再进行处理!
我的问题是:
串口通信时传输的数据到底是什么类型的?
下位机可以以整型方式向串口写入数据吗? 如果可以我能够在程序中直接定义整型的数组去接收吗?
下位机通常是以什么类型向串口写入数据的呢? 上位机和下位机所定义的类型是否需要一致?
我在写入与读取串口时究竟应该定义什么类型的数组来存储发送和接收时的数据?
在网上找了找,看到很多是定义成 BYTE 类型数组,然后还要进行很杂的转换,弄的我直晕,应该不会这么麻烦吧。
还有我下载串口调试助手源码是定义成 char 类型的,那么如果我定义成char类型进行读取,然后用atoi转换成整
型,读取的数据能否正确,因为我现在没有下位机进行实验,只能用串口助手测试,可串口助手和下位机是有差别的吧?小弟才疏学浅,希望大侠们能够帮帮小弟,在此不胜感激!
最终想要的数据是整型然后再进行处理!
我的问题是:
串口通信时传输的数据到底是什么类型的?
下位机可以以整型方式向串口写入数据吗? 如果可以我能够在程序中直接定义整型的数组去接收吗?
下位机通常是以什么类型向串口写入数据的呢? 上位机和下位机所定义的类型是否需要一致?
我在写入与读取串口时究竟应该定义什么类型的数组来存储发送和接收时的数据?
在网上找了找,看到很多是定义成 BYTE 类型数组,然后还要进行很杂的转换,弄的我直晕,应该不会这么麻烦吧。
还有我下载串口调试助手源码是定义成 char 类型的,那么如果我定义成char类型进行读取,然后用atoi转换成整
型,读取的数据能否正确,因为我现在没有下位机进行实验,只能用串口助手测试,可串口助手和下位机是有差别的吧?小弟才疏学浅,希望大侠们能够帮帮小弟,在此不胜感激!
-----------------------------------------------------------看了你的回复懂了点,那么如果下位机是用BYTE类型写入的数据,我可以用char类型数组去读取吗?
串口通信传输的数据实际上还是字节,接收端根据通信协议将字节组装成需要的数据。 下位机可以以整型方式向串口写入数据吗? 如果可以我能够在程序中直接定义整型的数组去接收吗?
下位机能不能写整型我不清楚,能写的话也应该是写入的四个字节或是两个字节的数据。你的程序接收要根据数据发送端的格式,一般的处理都是定义一个缓冲区,BYTE的数组,将收到的数据保存在缓冲区中,然后根据协议处理缓冲区中的数据。例如都是发送4位整型数据的话,就取出4个字节转换成一个整数。 下位机通常是以什么类型向串口写入数据的呢? 上位机和下位机所定义的类型是否需要一致?
一般串口通信都是一个字节一个字节传输的,当然会定义好协议,数据包格式。上下位机的发送和接受都按通信协议来,没有什么类型不类型。 我在写入与读取串口时究竟应该定义什么类型的数组来存储发送和接收时的数据?
写入串口都是最终还是以字节的形式,如int a = 10; writefile(hComm, &a, 4,…)就是写了一个四个字节数据。不管你用什么形式发送,只要最终把你要发送的字节发出去就行了。 在网上找了找,看到很多是定义成 BYTE 类型数组,然后还要进行很杂的转换,弄的我直晕,应该不会这么麻烦吧。
数据的最终处理要根据通信协议来的,就是这么麻烦。 还有我下载串口调试助手源码是定义成 char 类型的,那么如果我定义成char类型进行读取,然后用atoi转换成整
型,读取的数据能否正确,因为我现在没有下位机进行实验,只能用串口助手测试,可串口助手和下位机是有差别的吧?
char型和BYTE型本质上是一样的,都是8bit的数据,定义哪个都没啥差别。
---------------------------
真是太谢谢你了,明白了,很明白! 祝你一生平安!结贴!