我看了一个串口的代码,实在找不出有什么破绽,我连续调用 发送 字节程序是OK的。但是我连续调用发送字符串 函数第二次可能无法发送数据了。请高手赐教下~~ 但是如果我两次调用发送字符串函数,在它后面肯定发布出去数据了,不知道有什么问题,是不是函数定义有点问题,我很害怕那个指针··· while(str2[i]!=””\0″”) SendrStr(str1); ode const char str1[] = “The string is 来自单片机!\r\n”; /**************串口发送字符函数*************/ void SendOneByte(uint8 c) { ES = 0; //禁止中断,让串口安心工作啊 SBUF = c; while(!TI); //等待发送完毕 TI = 0; //清TI中断 ES = 1; //打开中断 } /**************串口发送字符串函数*************/ void SendrStr(const uint8 *ptr) { do { SendOneByte(*ptr); //其实发送字符串也是在调用发送字符的函数~~ }while(*ptr++!=""\0""); //要有结束判断,否则串口发送 字符串 不知道什么时候停止 } |
|
while(str2[i]!=””\0″”)
{ SendOneByte(str2[i++]); } SendrStr(str1); str2一直在++,在你发送的时候发送的时候str2是什么呢?想过吗 |
|
20分 |
不好意思 看错了 ,以上无效。 建议楼主把两次str2的地址打出来,看是否是编译器优化的时候修改了str2的地址 |
恩 我试试 好久没搞程序了,现在一个串口都把我搞死了···哎 |
|
出现的现象太奇怪了,我利用 字符显示 就显示 “133” 我用十六进制显示,却可以都接受到。我的代码 和 结构如下图: |
|
红色框框是 十六进制显示接收到的。后面绿色框框是 利用字符格式 接受的。我试过其他的串口工具,竟然也是一样的现象。实在不解不解啊~~~
|