关于串口的问题

老Gay 2006-09-01 09:29:11
接收方和送信方通过串口通信,送信方向接收方送出数据后接收方收到的数据会不完整(数据中的某些BYTE会丢失),并且会向自动发送方发送一些杂乱的数据,但是代码中并没有做相应的动作.双方串口的设置是完全相同的,有人见过这样的问题么?
很急,在线等~~~
谢谢~~~~~~
...全文
258 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowercity 2006-09-02
  • 打赏
  • 举报
回复
mark
gniyliu 2006-09-01
  • 打赏
  • 举报
回复
难道就是传说中的超级终端,老家伙够可以的阿
老Gay 2006-09-01
  • 打赏
  • 举报
回复
想杀人啊..........
老Gay 2006-09-01
  • 打赏
  • 举报
回复
问题解决了......
这个端口被设置成console口了......
我给忘了.......
郁闷啊!!!!!!!!
freeyang_ren 2006-09-01
  • 打赏
  • 举报
回复
不好说
你看你前面给出的的错误
# #
# #0
# #00
# #00V
# #00VR
# #00VR+
# #0 [(# #00VR+)-(# #00000+下一个数]=受信的初始值;
受信:0VR+0
# #00VR+01
# #00VR+012
# #00VR+0123
# #00V [(# #00VR+0123)-(# #00V000000+下一个数]=受信的初始值;
受信:R+01234
# #00VR+012345
# #00VR+012345
# #00VR+012 [(# #00VR+012345)-(# #00VR+012000+下一个数]=受信的初始值;
受信:345 8
# #00VR+012345 85
not found.
#
受信:
你把allcnt>=0x10改成allcnt>=16试试吧
不行的话你句把你的整个程序都给写出来在看看

老Gay 2006-09-01
  • 打赏
  • 举报
回复
这个在循环外面是有初始化过的......
应该和这个没问题~~~~~
主要是接收会丢失数据~~~~~
同时还会向发送端发送上面那种莫名其妙的数据~~~~~
但是在代码中发送数据的地方发送的数据是写死不会变的.......
freeyang_ren 2006-09-01
  • 打赏
  • 举报
回复

if( allCnt >= 0x10 )
{
printf( "-------- cnt = %d\n", allCnt );
printf("------------recv = " );
for( i = 0; i < allCnt; i++ )
{
printf("%c", wkBuf[i] );
}
printf( "\n");
allCnt= 0x00;
break;
}
}
}
}
在一次输出完以后加一个将allcnt重新初始化一下
这样下次才能在从新开始加
你看看这样行不行
没有完整的程序我也没有办法给你调试所以你自己试吧
老Gay 2006-09-01
  • 打赏
  • 举报
回复
没人来救我一下么........
老Gay 2006-09-01
  • 打赏
  • 举报
回复
收信端程序就是简单的监听端口,然后接收数据达到一定长度就打印出来,但是接收到的数据中间经常缺一些BYTE.....

while( 1 ){
FD_ZERO( &fds );
FD_SET( scDev[ret-1]->rsfd, &fds );
n = scDev[ret-1]->rsfd;
if( select(n + 1, &fds, NULL, NULL, &tmv) == 0 )
{
printf( "timeout!!--!!--\n" );
// tcflush( scDev[ret-1]->rsfd, TCIOFLUSH ); /* 送受信バッファクリア */
} else {
res = read(scDev[ret-1]->rsfd, &wkBuf[allCnt], 1024);
if( res > 0 )
{
printf("receive num = %d\n", res);
allCnt += res;
if( allCnt >= 0x10 )
{
printf( "-------- cnt = %d\n", allCnt );
printf("------------recv = " );
for( i = 0; i < allCnt; i++ )
{
printf("%c", wkBuf[i] );
}
printf( "\n" );
break;
}
}
}
}

以上就是接收段主要程序~~~~~
老Gay 2006-09-01
  • 打赏
  • 举报
回复
发送端用的是MSCOMM~~~
以前都可以的~~~~
这次不知道为什么不行了........
freeyang_ren 2006-09-01
  • 打赏
  • 举报
回复
你的把主要的程序给写出来我们才能和你一起分析
要不你这么笼统大家根本就没有办法给你解决这个问题
在这些东西上硬件和软件的问题都有可能的
我们大家可以给你检查一下软件有没有问题
但是硬件你就的自己看你的连接或者是设计上有没有问题了
老Gay 2006-09-01
  • 打赏
  • 举报
回复
送信: 23 30 30 56 52 2B 30 31 32 33 34 35 20 38 35 0D
受信:
# #
# #0
# #00
# #00V
# #00VR
# #00VR+
# #0
受信:0VR+0
# #00VR+01
# #00VR+012
# #00VR+0123
# #00V
受信:R+01234
# #00VR+012345
# #00VR+012345
# #00VR+012
受信:345 8
# #00VR+012345 85
not found.

#
受信:


=============================
以上就是错误时候的LOG~~~~~
送信显示的是送信电文的ASCII码~~~~
电文是#00VR+012345 85\n~~~~~~
不知道有没有人遇到过这样的问题~~~~
icesnows 2006-09-01
  • 打赏
  • 举报
回复
这么不清不楚哪能知道唉
老Gay 2006-09-01
  • 打赏
  • 举报
回复
救命啊顶上去~~~~~~

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧