打印

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

[复制链接]
2113|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
熊猫人电子|  楼主 | 2011-12-15 15:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, CAN, AN, DM, IDMA
求教高手分析一下我下面的程序,怎么写的是乱码啊!我的目的是想通过按键对模块写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);
       }
   }      
}

相关帖子

沙发
mhanchen| | 2011-12-15 16:56 | 只看该作者
WriteData();函数都没有贴出来。另外建议LZ稍微整理下,加点注释,别人会好看些

使用特权

评论回复
板凳
熊猫人电子|  楼主 | 2011-12-16 09:57 | 只看该作者
下面是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<length;i++)                       //通过for循环将要写入13页的数据赋给send_command
    {
           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);
}

使用特权

评论回复
地板
熊猫人电子|  楼主 | 2011-12-16 10:05 | 只看该作者
下面是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<length;i++)                    //通过for循环将要写入13页的数据赋给send_command
   {
        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);
}

使用特权

评论回复
5
s849372180| | 2011-12-16 10:21 | 只看该作者
Keyscan是采用的中断还是查询方式,总觉得while循环里有点不对劲。。。

使用特权

评论回复
6
熊猫人电子|  楼主 | 2011-12-16 11:47 | 只看该作者
5# s849372180
KeyScan()是键盘扫描程序,采用的是查询方式!

使用特权

评论回复
7
熊猫人电子|  楼主 | 2011-12-16 11:49 | 只看该作者
5# s849372180
问题就是出现在void main()函数里面,麻烦您帮我调试一下啊!谢谢啦!

使用特权

评论回复
8
熊猫人电子|  楼主 | 2011-12-16 11:53 | 只看该作者
2# mhanchen

下面是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<length;i++)   //将要写入13页的数据赋给send_command
{
send_command[i+2]=buff;
}BCC=DST_CRCStr(send_command,length+2);//将所有send_command进行校验
    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);
}

使用特权

评论回复
9
mhanchen| | 2011-12-16 12:18 | 只看该作者
8# 熊猫人电子

小弟水平有限,暂时也没看出问题,如果楼主现在也是没有进展的话我建议您先从接受一个字节数据开始调试,成功后再增加数据长度,这样应该可以找出来,也让我再研究研究- -!

使用特权

评论回复
10
熊猫人电子|  楼主 | 2011-12-16 13:05 | 只看该作者
恩!谢啦!

使用特权

评论回复
11
kama_ya| | 2011-12-16 15:40 | 只看该作者
1# 熊猫人电子   你这主程序 乱写,不乱有鬼了。

使用特权

评论回复
12
ComeONic| | 2011-12-16 16:31 | 只看该作者
你的主程序设计严重错误,当然不会有正确的值。 假设你按了第一个按键被正确接收在第1个缓冲区,你再看看你的代码,第2个按键按下时,你一定能保证在第2个缓冲区吗?

使用特权

评论回复
13
熊猫人电子|  楼主 | 2011-12-16 17:02 | 只看该作者
12# ComeONic
我是刚毕业不久,对这块不是太懂!麻烦您帮我在主函数当中改一下吧!谢谢您了!

使用特权

评论回复
14
熊猫人电子|  楼主 | 2011-12-16 17:04 | 只看该作者
11# kama_ya

那该如何修改,麻烦您指教一下啊!

使用特权

评论回复
15
mhanchen| | 2011-12-16 17:28 | 只看该作者
围观高人解答,和lz一起受教了:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

17

帖子

1

粉丝