刚刚学习上位机 ,问几个基础的问题.我的程序是通过串口从下位机读取数据。
最终想要的数据是整型然后再进行处理!
我的问题是:
 串口通信时传输的数据到底是什么类型的? 
 下位机可以以整型方式向串口写入数据吗? 如果可以我能够在程序中直接定义整型的数组去接收吗?
 下位机通常是以什么类型向串口写入数据的呢? 上位机和下位机所定义的类型是否需要一致? 
 我在写入与读取串口时究竟应该定义什么类型的数组来存储发送和接收时的数据?
 在网上找了找,看到很多是定义成 BYTE 类型数组,然后还要进行很杂的转换,弄的我直晕,应该不会这么麻烦吧。
 还有我下载串口调试助手源码是定义成 char 类型的,那么如果我定义成char类型进行读取,然后用atoi转换成整
 型,读取的数据能否正确,因为我现在没有下位机进行实验,只能用串口助手测试,可串口助手和下位机是有差别的吧?小弟才疏学浅,希望大侠们能够帮帮小弟,在此不胜感激!

解决方案 »

  1.   

    无论下位机以什么型数据写入,最后传输的都是一个个字节。下位机写入整型,实际上就是写入了四个字节,串口收到了四个字节,把这四个字节转换成整型就可以了。楼主写串口程序可以装虚拟串口软件,虚拟出一对串口进行收发就好了。关于你那个用char读取的,char本质上也是一个8位的整数而已,串口助手定义用char接收本义并不是说是用字符串处理,仅仅是用来处理每个字节的数据而已。总之一个原则,下位机怎么发,上位机就怎么收。
      

  2.   

    zxdlms  谢谢你的回复!
    -----------------------------------------------------------看了你的回复懂了点,那么如果下位机是用BYTE类型写入的数据,我可以用char类型数组去读取吗?
      

  3.   

    串口通信时传输的数据到底是什么类型的?  
    串口通信传输的数据实际上还是字节,接收端根据通信协议将字节组装成需要的数据。 下位机可以以整型方式向串口写入数据吗? 如果可以我能够在程序中直接定义整型的数组去接收吗?
    下位机能不能写整型我不清楚,能写的话也应该是写入的四个字节或是两个字节的数据。你的程序接收要根据数据发送端的格式,一般的处理都是定义一个缓冲区,BYTE的数组,将收到的数据保存在缓冲区中,然后根据协议处理缓冲区中的数据。例如都是发送4位整型数据的话,就取出4个字节转换成一个整数。 下位机通常是以什么类型向串口写入数据的呢? 上位机和下位机所定义的类型是否需要一致?
    一般串口通信都是一个字节一个字节传输的,当然会定义好协议,数据包格式。上下位机的发送和接受都按通信协议来,没有什么类型不类型。 我在写入与读取串口时究竟应该定义什么类型的数组来存储发送和接收时的数据?
    写入串口都是最终还是以字节的形式,如int a = 10; writefile(hComm, &a, 4,…)就是写了一个四个字节数据。不管你用什么形式发送,只要最终把你要发送的字节发出去就行了。 在网上找了找,看到很多是定义成 BYTE 类型数组,然后还要进行很杂的转换,弄的我直晕,应该不会这么麻烦吧。
    数据的最终处理要根据通信协议来的,就是这么麻烦。 还有我下载串口调试助手源码是定义成 char 类型的,那么如果我定义成char类型进行读取,然后用atoi转换成整
     型,读取的数据能否正确,因为我现在没有下位机进行实验,只能用串口助手测试,可串口助手和下位机是有差别的吧?
    char型和BYTE型本质上是一样的,都是8bit的数据,定义哪个都没啥差别。
      

  4.   

    无符号的字符型。unsigned char型
      

  5.   

    zxdlms   (活到老,学到老) 
    ---------------------------  
    真是太谢谢你了,明白了,很明白! 祝你一生平安!结贴!