当前位置: 技术问答>linux和unix
串口接收程序运行环境由windows改为linux后是否有大小端问题?
来源: 互联网 发布时间:2017-02-13
本文导语: 简单的从串口读取数据,每次13个字节。下面的过程删去了些判断执行成功否的语句。 fd = OpenDev(g_deviceName ); set_speed(fd,g_deviceRate); set_Parity(fd,8,1,'N'); fLog = fopen("comdat...
简单的从串口读取数据,每次13个字节。下面的过程删去了些判断执行成功否的语句。
fd = OpenDev(g_deviceName );
set_speed(fd,g_deviceRate);
set_Parity(fd,8,1,'N');
fLog = fopen("comdata.log","w+");
while((nread = read(fd,buff,13))>0)
{
//处理。。。。
sleep(1);
}
以前是另外一个VC8的串口读取程序,运行在windows下,每次读13个字节,然后处理。上面是我的程序,与前一个程序不同的是我这个会运行在linux下,实验结果是两个程序在处理同一个输入的时候,结果不同。
后面的处理,会按接收顺序,把这13个字节先变成0、1的字符串,比如8,就会变成0000 1000,然后再处理这13 * 8 = 108 个01字符串。
我怀疑是不是两个操作系统大小端不一样,导致我在linux下读出的串口数据,处理时会因为字节顺序不同,而导致的最后形成的01字符串不一样?
但又有人说大小端只有在int等数据类型时才有影响,char类型不受影响,请各位赐教!!
fd = OpenDev(g_deviceName );
set_speed(fd,g_deviceRate);
set_Parity(fd,8,1,'N');
fLog = fopen("comdata.log","w+");
while((nread = read(fd,buff,13))>0)
{
//处理。。。。
sleep(1);
}
以前是另外一个VC8的串口读取程序,运行在windows下,每次读13个字节,然后处理。上面是我的程序,与前一个程序不同的是我这个会运行在linux下,实验结果是两个程序在处理同一个输入的时候,结果不同。
后面的处理,会按接收顺序,把这13个字节先变成0、1的字符串,比如8,就会变成0000 1000,然后再处理这13 * 8 = 108 个01字符串。
我怀疑是不是两个操作系统大小端不一样,导致我在linux下读出的串口数据,处理时会因为字节顺序不同,而导致的最后形成的01字符串不一样?
但又有人说大小端只有在int等数据类型时才有影响,char类型不受影响,请各位赐教!!
|
确实大小端是针对整数而言的
这13个字节是怎么发送的,里面有没有包含整数呢?
如果是一个单纯的字符串,问题应该不大
如果是从一个结构体啥的转换而来,而结构体里面又包含整数的话,可能有影响
这13个字节是怎么发送的,里面有没有包含整数呢?
如果是一个单纯的字符串,问题应该不大
如果是从一个结构体啥的转换而来,而结构体里面又包含整数的话,可能有影响
|
大小端跟cpu有关,与操作系统无关。
当然不包括网络传输
当然不包括网络传输