主題:串口問題 共有40141人關注過本帖 |
---|
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 [只看該作者]
看了你的程序,沒有什么問題。請檢查你的接收方通訊參數是否也作了相應的調整。
|
|
單帖管理 | 引用 | 回復 |