0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

求教高手分析一下我下面的程序,怎么写的是乱码啊!

求教高手分析一下我下面的程序,怎么写的是乱码啊!我的目的是想通过按键对模块写5个字节数据,可是写进去的是乱码!而且当我按下确认键(E)后,LED灯有时也不闪烁(即没有写进去数据)!
KeyScan()和WriteData()是我自定义的函数!麻烦高手帮我写个正确接收5个字节数据的程序!(当按下确认键E后,即对模块进行写我从键盘输入的5个字节数据)

void main()
{
   uchar i=0;
   uchar temp1;
   uchar temp2;
   while(1)
   {   
        for(i=0;i<5;i++)  
        {  
              if(keyvalue>=0&&keyvalue<=9)
             {     
                    KeyScan();
                    temp1=keyvalue;
                    KeyScan();
                    temp2=keyvalue;
                    sendbuff[i]=temp2+temp1*10;
             }
       }  
       KeyScan();
       if(keyvalue=='E')
       {  
            WriteData(sendbuff,5);
       }
   }      
}
提问者:uweuruer2 地点:- 浏览次数:7406 提问时间:06-17 22:52
我有更好的答案
提 交
6条回答
送终鸡酒 06-25 00:19
WriteData();函数都没有贴出来。另外建议LZ稍微整理下,加点注释,别人会好看些
zimufan 06-27 11:41
下面是WriteData()函数,其中WriteData()和DST_CRCStr()函数及SendData()函数都是我自定义的函数,我调试了,都是无误的程序!现在我遇到的问题是在主函数main()中,我想通过在主函数中实现从键盘输入5个数据,可是怎么老是写进去的不是我从键盘输入的数据!麻烦您帮我写个正确从键盘接收多个字节数据的程序吧!谢谢啦!
void WriteData(uchar *buff,uchar length)
{
      uint BCC;
      uchar i,send_command[15];
      send_command[0]=0x35;                //第13页的写指令
    send_command[1]=0x0E;                //第一页的内容
    for(i=0;i    {
           send_command[i+2]=buff[i];
    }
    BCC=DST_CRCStr(send_command,length+2);         //将所有send_command进行BCC校验
   send_command[length+2]=BCC;                //低8位赋给BCC
    BCC>>=8;                                               
    send_command[length+3]=BCC;                 //高8位赋给BCC
    TXCT=0;                                //下面为数据的发送格式
   timer_ms_delay(50);
    SendData(send_command,length+4);                         //发送数据
   TXCT=0;
     timer_ms_delay(15);                         //延时15毫秒
   TXCT=1;
     timer_ms_delay(15);
}
yuhe82 06-24 00:08
下面是WriteData()函数,其中WriteData()和DST_CRCStr()函数及SendData()函数都是我自定义的函数,我调试了,都是无误的程序!现在我遇到的问题是在主函数main()中,我想通过在主函数中实现从键盘输入5个数据,可是怎么老是写进去的不是我从键盘输入的数据!麻烦您帮我写个正确从键盘接收多个字节数据的程序吧!谢谢啦!
void WriteData(uchar *buff,uchar length)
{
      uint BCC;
      uchar i,send_command[15];
      send_command[0]=0x35;                //第13页的写指令
    send_command[1]=0x0E;                //第一页的内容
    for(i=0;i   {
        send_command[i+2]=buff[i];
    }
    BCC=DST_CRCStr(send_command,length+2);      //将所有send_command进行BCC校验
   send_command[length+2]=BCC;                         //低8位赋给BCC
    BCC>>=8;                                                
    send_command[length+3]=BCC;                         //高8位赋给BCC
    TXCT=0;                                                               //下面为数据的发送格式
   timer_ms_delay(50);
    SendData(send_command,length+4);                 //发送数据
   TXCT=0;
     timer_ms_delay(15);                                           //延时15毫秒
   TXCT=1;
     timer_ms_delay(15);
}
ssqq1980 06-21 22:45
Keyscan是采用的中断还是查询方式,总觉得while循环里有点不对劲。。。
袁文豹灬 06-20 02:27
你的主程序设计严重错误,当然不会有正确的值。 假设你按了第一个按键被正确接收在第1个缓冲区,你再看看你的代码,第2个按键按下时,你一定能保证在第2个缓冲区吗?
vnwyeurm23 06-24 02:43
围观高人解答,和lz一起受教了:)
撰写答案
提 交
1 / 3
1 / 3