我想用C语言写一个串口程序,单片机和PC机通讯,
我输入一句话areyouready?,单片机会回复我OK,如果输入goaway,单片机回复我error,请教高手帮忙,谢谢!!...
我输入一句话are you ready?,单片机会回复我OK,如果输入go away,单片机回复我error,请教高手帮忙,谢谢!!
展开
2个回答
展开全部
分为三个部分进行设计
1. 上位机:使用一种语言(最好用可视化的,最简单的如VB)设计界面及程序,要点是读写串口。
2. 设计通信协议:字符采用ASCII码表示,协议可以包括起始+数据+检验。
3. 单片机部分设计:串口设置(选择中断方式或查询方式)、接收串口数据(读取SBUF)、数据处理(根据协议解读、译码)、判断哪种、编码(转换ASCII码)、回复(写SBUF)。
1. 上位机:使用一种语言(最好用可视化的,最简单的如VB)设计界面及程序,要点是读写串口。
2. 设计通信协议:字符采用ASCII码表示,协议可以包括起始+数据+检验。
3. 单片机部分设计:串口设置(选择中断方式或查询方式)、接收串口数据(读取SBUF)、数据处理(根据协议解读、译码)、判断哪种、编码(转换ASCII码)、回复(写SBUF)。
更多追问追答
追问
我还是把程序写下来吧,请你们指点一下,
#include
void sendstr(unsigned char *s );
unsigned char flag,a,;
void initUART() // 初始化设置串口我省略不写了,
{
...
}
void main()
{
initUART();
while(1)
{
while(!RI);
RI=0;
a=SBUF;
if( ) //IF小括号里如何编写,单片机才能辨认are you read
{
sendstr("ok")
}
}
}
追答
你的程序只是接收一个字节数据,上位机发送的一串数据,你需要设置一个数组来全部接收,接收之后进行译码。
也就是你小括号内的东东。
所谓的译码就需要你先在上位机进行编码,编码一般采用ASCII码。你可以从网上找一下编码表。把你需要用的部分摘出来编成数组。
译码是编码的反过程。
说得够清楚了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询