請問把open ttyS0這段程式碼放在on_xxx_clicked() 適當嗎?

喜歡程式設計嗎?想要一窺 KDE/Qt 程式設計的奧秘嗎?想要
學習 X Window 上的視窗程式設計嗎?歡迎各類關於 KDE/Qt、Qtopia、Qt/Embedded、QSA、PyQt 等各類心得討論。

版主: AceLan, Franklin

請問把open ttyS0這段程式碼放在on_xxx_clicked() 適當嗎?

文章brian1125 » 週一 1月 19, 2009 9:08 pm

我利用eclipse + qt先把視窗建構出來後,
我打算當我按下一個按鈕時 就把我上面輸入的東西經由rs232傳送到另一個port上,
所以我就把打開device 和 write device的程式碼放在我按下按鈕那個程式碼區段內 如下
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyS1"

void AddressBook::on_xyButton_clicked()
{
int fd, res;
struct termios oldtio, newtio;

fd = open(MODEMDEVICE, O_RDWR|O_NOCTTY);
if (fd < 0) {
perror(MODEMDEVICE);
exit(1);
}
tcgetattr(fd, &oldtio);
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE|CS8|CLOCAL|CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;

newtio.c_lflag = ICANON;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);

QString position = ui.posEdit->text();
res=write(fd, position.toAscii().data(), 1);

close(fd);
tcsetattr(fd, TCSANOW, &oldtio);
}

我測試過write傳回的值是1 所以應該式正確寫入
但是我用另一個可以接收rs232資料的程式打開後卻都沒有接收到任何東西,
不知道是怎麼回事,
我怕是因為對於事件的概念還不是很好 所以把程式碼放入不恰當的地方,
所以懇求高手幫我看一下
謝謝~
brian1125
可愛的小學生
可愛的小學生
 
文章: 1
註冊時間: 週二 12月 30, 2008 2:11 pm

文章AceLan » 週二 1月 20, 2009 6:34 pm

你的問題應該是單純的 serial programming 問題
可以 google 一下 serial programming + qt 看看有沒有答案

另外 你這段寫出的 function 看起來沒什麼大問題
有可能是收端的問題
AceLan
摩托學園!學園長們
摩托學園!學園長們
 
文章: 129
註冊時間: 週日 6月 01, 2003 7:53 pm
來自: KDE@Taiwan


回到 KDE/Qt 程式設計

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客