OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 348|回复: 1

通讯协议,按照协议简单写了个程序,用不了。匿名上位机的

[复制链接]

  离线 

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2018-4-6
在线时间
18 小时
发表于 2018-6-1 03:20:00 | 显示全部楼层 |阅读模式
3金钱
本帖最后由 会飞的萨摩 于 2018-6-1 03:23 编辑

//协议如下
//上位机发送读PID数据的命令为:0X8A 0X8B 0X1C 0XAD + 无用数据 + SUM

///串口1接收1个字节/////返回值:接收到的字节
///////
int usart1_receive_char()
{
        u8 c;
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//Ñ-»··¢Ëí,Ö±μ½·¢Ëííê±Ï   
        c=USART_ReceiveData(USART1);
        return c;
}
//////读pid
///返回i。1成功,0失败;
int Read_pid()
{
    u8 i=0;
    if(usart1_receive_char()==0x8A)                   //接收到的第一个字节是不是0x8A
    {
        if(usart1_receive_char()==0x8B)                      //接收到的第二个
       {
           if(usart1_receive_char()==0x1C)                  //接收到的第三个
           {
               if(usart1_receive_char()==0xAD)  i=1;               
           }                        
       }               
    }        
     return i;
}



上次写的单片机上传pid数据到匿名上位机写出来了。不过是一直上传,就想用那个‘读pid’的按钮来控制,
当我点一下读pid,上位机就发送一串数据到下位机,然后我的程序就判断接收到这个命令上传pid数据。

下面是主函数中的那条判断的语句
if(Read_pid()) usart1_report_pid(1,0,3,4,5,6,6,6,6);


就想问问各位大佬,我这个逻辑没问题吧?

读pid按钮_如上

读pid按钮_如上

最佳答案

查看完整内容[请看2#楼]

可以了,我把接收写在中断里面就行了,先把接收到的数据打印出来,看看点下按钮会发什么数据给下位机,再根据这串数据写程序
回复

使用道具 举报

  离线 

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2018-4-6
在线时间
18 小时
 楼主| 发表于 2018-6-1 03:20:01 | 显示全部楼层
可以了,我把接收写在中断里面就行了,先把接收到的数据打印出来,看看点下按钮会发什么数据给下位机,再根据这串数据写程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-6-23 01:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */