主题:串口问题

  共有36034人关注过本帖    
ggg
1楼


串口问题  发帖心情 Post By:2005-1-24 9:20:00   [只看该作者]

我是贵公司etr232i网络模块的用户   我在进行串口通讯的时候 往下面发数  各个字节的数据传输格式需要不一样 比如第一个字节不加效验  而第二个奇偶位保持传号  进行了串口初始化函数后 在数据传输过程中 我改变数据传输格式无效  串口通讯不是很了解  我程序是这样写的 是什么地方错了:
#define LCR 3*2
.
.
main()
{
.
.
unsigned int tport = 0xff10;
COM_NUM = 2;                    
InitUART1 ( COM_NUM, 2 )         
InstallISR  ( COM_NUM )  
.
.
abyte = 0x00;
PutOutputData  ( abyte )                             
.
.
.
UninstallISR  ( COM_NUM )  
outport(tport + LCR, 0x80);  //DLAB 置0
outport(tport + LCR,0x2b);  //奇偶保持传号
InstallISR(COM_NUM);
abyte = Pos[i].pos_no;
PutOutputData  ( abyte )                           StartSend  () 
.
.
第二个字节的格式始终没有改变  是哪里有错误?
望赐教

  单帖管理 | 引用 | 回复 回到顶部
zhl
2楼


  发帖心情 Post By:2005-1-24 9:51:00   [只看该作者]

outport(tport + LCR, 0x80) 执行是用于设置波特率。所以如果仅仅改变奇偶校验,只需要直接调用outport(tport + LCR,0x2b)即可。

  单帖管理 | 引用 | 回复 回到顶部
ggg
3楼


  发帖心情 Post By:2005-1-24 9:56:00   [只看该作者]

不好意思 写错了 是
outport(tport + LCR, 0x00);  //DLAB 置0
outport(tport + LCR,0x2b);  //奇偶保持传号

  单帖管理 | 引用 | 回复 回到顶部
ggg
4楼


  发帖心情 Post By:2005-1-24 10:06:00   [只看该作者]

和UninstallISR  ( COM_NUM );InstallISR(COM_NUM);没有关系吗?
传输过程中直接调用 outport(tport + LCR,0x2b); 就可以PutOutputData  ( abyte )?  不需要再置中断 和恢复中断吗?

  单帖管理 | 引用 | 回复 回到顶部
ggg
5楼


  发帖心情 Post By:2005-1-24 10:20:00   [只看该作者]

我们仿真试过  确实收不到+了奇偶效验的第二个字节 
您能帮忙测试一下吗?

  单帖管理 | 引用 | 回复 回到顶部
ggg
6楼


  发帖心情 Post By:2005-1-24 11:54:00   [只看该作者]

测试程序以发至邮箱zhl@emtronix.com.cn
请查收  谢谢

  单帖管理 | 引用 | 回复 回到顶部
zhl
7楼


  发帖心情 Post By:2005-1-24 15:51:00   [只看该作者]

看了你的程序,没有什么问题。请检查你的接收方通讯参数是否也作了相应的调整。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

串口问题

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: