我对下位机是一点也不懂啊,现在和一个同事合作一个最简单的串口通信程序。
上位机发送一个指令(假设是'a'这个byte)下位机回复一个字节表示温度。
那么 WriteFile 和ReadFile的时候是不是和TCP类似,buffer里面只有用户数据?
------解决方案--------------------
SBUF='a';
------解决方案--------------------
那你得问下位机
------解决方案--------------------
问你同事发的是什么咯。。。报文头只是你们商定的协议加或者不加
------解决方案--------------------
一个说英语,一个说中文,很难沟通
协议就是大家说一种语言
------解决方案--------------------
一发一收而已。
------解决方案--------------------
直接读取bufer就可以啊,把想要的读取的数据放在bufer里
------解决方案--------------------
我写一个简单的收发
void send_8bit(uchar dat)
{
bit es;
es = ES;
ES = 0; //这是防止在发送中被串行中断打断
SBUF = dat;
while(TI == 0);
TI = 0; //当数据没有发送完的时候,TI一直是0,发送完后会变成1
}//这样一个8位的数据就发送完了额
void send_str(uchar *p) //发送一个字符串
{
while(*p != '\0')
send_8bit(*p++);
}//这样一个字符串就发完啦额
void isr_es() interrupt 4 // 这是一个串口中断服务函数,用来接收
{
uchar sbuf;
if(RI == 1) //有数据进来
{
RI = 0;
sbuf = SBUF; //这里的sbuf 你可以设置成一个全局变量,这样你就可以操作这个通过串口送进来的数据了
}
}
------解决方案--------------------
只要弄懂了双方设定的协议就OK了