天嵌 ARM开发社区

 找回密码
 注册
查看: 2978|回复: 11

开发板自带的串口程序问题

[复制链接]
fl753914075 发表于 2012-3-25 11:01:09 | 显示全部楼层 |阅读模式
我用的是TQ2440开发板自带的串口测试程序,及驱动,但是每次接受16进制数的时候都会出问题,开发板接受到的数据总比发的少了0x80,发的是0xcc 收到的肯定是0x4c ,我才肯定是程序问题,但是不知道该怎么改,求指导,万分感谢
guoke25 发表于 2012-3-25 12:44:33 | 显示全部楼层
有可能是因为你的变量定义的是char,结果赋值的时候被强制转换了。你试试把变量改为unsigned char试试
guoke25 发表于 2012-3-25 12:50:07 | 显示全部楼层
不过看看你反映的情况,好像我的分析没什么道理,还是贴源码出来让大家帮你看看比较好
 楼主| fl753914075 发表于 2012-3-25 15:31:28 | 显示全部楼层
guoke25 发表于 2012-3-25 12:50
不过看看你反映的情况,好像我的分析没什么道理,还是贴源码出来让大家帮你看看比较好

void serial_rw()
{
        int i;
        unsigned char buff[512];
        unsigned char buff2[] = "hello,TQ2440!\n";
        int nread,nwrite;

        nwrite = write(serial_fd,buff2,sizeof(buff2));
        printf("nwrite=%d\n",nwrite);
        while(1)
        {
                if((nread = read(serial_fd,buff,512))>0)
                {
                        buff[nread] = '\0';
#if 0        //调用这段代码可以实现回显,如果配合上面的回显,就会出现回显两次的情况。
                        write(serial_fd,buff,nread);
#endif
                        printf("\nrecv:%d\n",nread);
#if 1
                        for(i=0;i<nread;i++)
                        {
                                printf("%x",buff);
                        }
                        printf("\n");
#else
                        printf("%s",buff);
                        printf("\n");
#endif
                }
        }

        close(serial_fd);

}
guoke25 发表于 2012-3-25 16:12:40 | 显示全部楼层
                        for(i=0;i<nread;i++)
                        {
                                printf("%x",buff);
                        }
这个地方好像始终打印的是buff这个地址?
 楼主| fl753914075 发表于 2012-3-25 16:26:28 | 显示全部楼层
guoke25 发表于 2012-3-25 16:12
for(i=0;i

不好意思刚刚我没有粘好,麻烦你了,帮我解决吧
void serial_rw()
{
        int i;
        unsigned char buff[512];
        unsigned char buff2[] = "hello,TQ2440!\n";
        int nread,nwrite;

        nwrite = write(serial_fd,buff2,sizeof(buff2));
        printf("nwrite=%d\n",nwrite);
        while(1)
        {
                if((nread = read(serial_fd,buff,512))>0)
                {
                        buff[nread] = '\0';
#if 0        //调用这段代码可以实现回显,如果配合上面的回显,就会出现回显两次的情况。
                        write(serial_fd,buff,nread);
#endif
                        printf("\nrecv:%d\n",nread);
#if 1
                        for(i=0;i<nread;i++)
                        {
                                printf("%x",buff);
                        }
                        printf("\n");
#else
                        printf("%s",buff);
                        printf("\n");
#endif
                }
        }

        close(serial_fd);

}
 楼主| fl753914075 发表于 2012-3-25 16:27:32 | 显示全部楼层
guoke25 发表于 2012-3-25 16:12
for(i=0;i

是这样的printf("%x",buff);  没粘好
guoke25 发表于 2012-3-25 16:30:53 | 显示全部楼层
fl753914075 发表于 2012-3-25 16:27
是这样的printf("%x",buff);  没粘好

printf("%x",buff);这里你改成buff试试?
guoke25 发表于 2012-3-25 16:32:06 | 显示全部楼层
fl753914075 发表于 2012-3-25 16:27
是这样的printf("%x",buff);  没粘好

哦。。看懂了,原来后面那个部分被自动变成了斜体格式的标识了。
guoke25 发表于 2012-3-25 16:42:20 | 显示全部楼层
呵呵我也搞不清楚了,没做过这一节内容
wb686 发表于 2013-1-30 23:15:34 | 显示全部楼层
你在哪儿找的串口程序,我也是2440怎么没有这个程序,求分享
属于我的u 发表于 2013-5-1 03:40:21 | 显示全部楼层
我最近也遇到相同问题了。。求大神解答呀。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-7 02:12 , Processed in 1.549706 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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