请问:如何用C程序向串口发送数据大于256的数据?

时间:2022-11-25 07:58:02
有数据xx=54321.78,向串口发送。但大于255时就取余了。如发257,得到是数据2了。如何用C程序向串口发送数据大于256的数据?

8 个解决方案

#1


一般发送都是按字节,注意大小端的匹配

上网找个例子看看

#2


定义一个格式帧  把每个数据转换为2进制之后按直接发送 这样涉及到一个你的协议  定义i个协议吧所有的书按照二进制转换为字节流发送

#3


谢谢。没有合适的。只能两位两位的发送才好。不知如何实现“两位两位发送”,这样不会超过100。继续指点指点。

#4


就是解决“如何从字符数组中读取两位数据”问题。有程序指点吗?

#5


把54321.78转换成字符数组通过串口发送出去

#6



void Float64byte(float64 number,Uint16 byteArray[8]) 

int16 i,j; 
Uint16 temp[4]; 
Uint16* pchar=(Uint16*)&number; 
for(i=0,j=0;i<4;i++,j+=2) 

temp[i] = * pchar; 
byteArray[j] = temp[i]&0xff; 
byteArray[j+1] = (temp[i]>>8)&0xff; 
pchar++; 
}  

#7


STX,或透明协议。

#8


引用 7 楼 wcg_jishuo 的回复:
STX,或透明协议。


能具体些吗?给个程序最好了。

#1


一般发送都是按字节,注意大小端的匹配

上网找个例子看看

#2


定义一个格式帧  把每个数据转换为2进制之后按直接发送 这样涉及到一个你的协议  定义i个协议吧所有的书按照二进制转换为字节流发送

#3


谢谢。没有合适的。只能两位两位的发送才好。不知如何实现“两位两位发送”,这样不会超过100。继续指点指点。

#4


就是解决“如何从字符数组中读取两位数据”问题。有程序指点吗?

#5


把54321.78转换成字符数组通过串口发送出去

#6



void Float64byte(float64 number,Uint16 byteArray[8]) 

int16 i,j; 
Uint16 temp[4]; 
Uint16* pchar=(Uint16*)&number; 
for(i=0,j=0;i<4;i++,j+=2) 

temp[i] = * pchar; 
byteArray[j] = temp[i]&0xff; 
byteArray[j+1] = (temp[i]>>8)&0xff; 
pchar++; 
}  

#7


STX,或透明协议。

#8


引用 7 楼 wcg_jishuo 的回复:
STX,或透明协议。


能具体些吗?给个程序最好了。