ARM RS232方面問題 |
缺席
|
a910937
一般會員 發表:3 回覆:3 積分:1 註冊:2008-10-28 發送簡訊給我 |
各位大大好~ 小妹最近再碰ARM的硬體(s3c2410) 我有兩個ARM板,想透過RS-232來互相傳輸 ...我的TX端的程式是這樣的 : int main() { int fd; char buffer[]="0123456789"; int Length=255; int nByte; fd=open("/dev/ttyS1",O_RDWR | O_NONBLOCK); while(fd!=0) { nByte = write(fd,buffer,Length); printf(" buffer is= %s nByte=%d",buffer,nByte); } close(fd); } RX端: int main() { int fd; int nByte=0; char buf[255]; fd=open("/dev/ttyS1",O_RDWR ); if (fd==NULL) printf("open error\n"); while (nByte !=NULL) { nByte = read(fd,buf,255); printf("nByte=%d\n",nByte); printf("buffer is: %s nByte=%d", buf , nByte); } close(fd); } 可是不知道為什麼接收端的ARM板,好像收不到TX端要傳的字串,都顯示不出來 不知道有沒有大大們用過ARM板,我是用C語言去寫code,我已經確認rs232事可以互相傳輸的, 不過不知道為甚麼使用迴圈會發生錯誤,是接收端buffer問題嗎~? 希望有經驗的大大解答^^ 希望有使用過rs232經驗的大大們解答^^ 謝謝~~~~~ |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
請問.你的程式會進入 while (nByte != NULL) 這個迴圈嗎?
Linux 的 RS232 是這樣寫接收的嗎? ===================引 用 a910937 文 章=================== RX端: int main() { int fd; int nByte=0; char buf[255]; fd=open("/dev/ttyS1",O_RDWR ); if (fd==NULL) printf("open error\n"); while (nByte !=NULL) { nByte = read(fd,buf,255); printf("nByte=%d\n",nByte); printf("buffer is: %s nByte=%d", buf , nByte); } close(fd); } 可是不知道為什麼接收端的ARM板,好像收不到TX端要傳的字串,都顯示不出來 不知道有沒有大大們用過ARM板,我是用C語言去寫code,我已經確認rs232事可以互相傳輸的, 不過不知道為甚麼使用迴圈會發生錯誤,是接收端buffer問題嗎~? 希望有經驗的大大解答^^ 希望有使用過rs232經驗的大大們解答^^ 謝謝~~~~~ |
a910937
一般會員 發表:3 回覆:3 積分:1 註冊:2008-10-28 發送簡訊給我 |
|
bernie_w39
資深會員 發表:3 回覆:199 積分:280 註冊:2007-10-07 發送簡訊給我 |
這樣的收發程式, 要是測的出正確的結果, 就真是怪事了.
先改 TX 部份, 用超級終端機測到整個字串完整收到, 再來改 RX. 如果收不到, 可能要考慮設一下 ioctl int main() { int fd; char buffer[]="0123456789"; int Length=strlen(buffer); int Shift = 0; int nByte; fd=open("/dev/ttyS1",O_RDWR | O_NONBLOCK); if (fd >= 0) { while(Length > 0) { nByte = write(fd,buffer Shift,Length); if (nByte < 0) break; Shift = nByte; Length -= nByte; printf(" buffer is= %s nByte=%d",buffer,nByte); } close(fd); } } |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
怪事年年有.今年特別多.
這樣的程式.要是能正常.那真的.就不會有那麼多失敗的案子了. http://www.easysw.com/~mike/serial/serial.html 去看看人家寫的 Linux 下 serial port 要怎麼用吧. 抄一下.應該不難吧. ===================引 用 bernie_w39 文 章=================== 這樣的收發程式, 要是測的出正確的結果, 就真是怪事了. 先改 TX 部份, 用超級終端機測到整個字串完整收到, 再來改 RX. 如果收不到, 可能要考慮設一下 ioctl int main() { int fd; char buffer[]="0123456789"; int Length=strlen(buffer); int Shift = 0; int nByte; fd=open("/dev/ttyS1",O_RDWR | O_NONBLOCK); if (fd >= 0) { while(Length > 0) { nByte = write(fd,buffer Shift,Length); if (nByte < 0) break; Shift = nByte; Length -= nByte; printf(" buffer is= %s nByte=%d",buffer,nByte); } close(fd); } } |
a910937
一般會員 發表:3 回覆:3 積分:1 註冊:2008-10-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |