首页| 论坛| 消息

回复: 串口调试助手(QT 4.4.3 + QextSerialPort 1.2)
#16 [yzy727 12-22 19:40]
QextSerialPort是从哪里来的啊??在你源文件找不到啊!!!
你这个可执行wenjian可以在Linux下运行吗???
#17 [银色子弹 03-03 18:08]
搞了一天终于把QextSerialPort 1.2和你的这个串口调试助手运行起来了,头都大了
#18 [csoapy 03-04 22:55]
呵呵,要是nokia能把它加入3dparty就好了,要是再能做个像VB里面那样的控件那就更好了,工控设备或手持设备上串口的应用还是很广泛的。
要自己下载源码编译是麻烦了些。
#19 [银色子弹 03-10 20:05]
我想在控制台里面使用这个函数包,始终不能成功。出现的错误是E_WRITE_FAILED错误。
在你的源代码on_pushButton_Send_clicked()里在comm->write()后面加上以下语句:
comm->waitForBytesWritten(-1);
ulong error = comm->lastError();
if(0!=error)
{
QMessageBox::critical(this, QString::fromLocal8Bit("错误"),
QString::fromLocal8Bit("error = ")+QString::number(error));
}
也会显示error = 14。也就表示也出现了E_WRITE_FAILED错误。
请问怎样才能去除这个错误?
谢谢!!!!!
#20 [csoapy 03-12 02:58]
引用第19楼银色子弹于2009-03-10 20:05发表的  :
我想在控制台里面使用这个函数包,始终不能成功。出现的错误是E_WRITE_FAILED错误。
在你的源代码on_pushButton_Send_clicked()里在comm->write()后面加上以下语句:
comm->waitForBytesWritten(-1);
ulong error = comm->lastError();
.......
不明白你为什么要waitForBytesWritten(-1)?这个程序里面有这么一行:comm->setQueryMode(QextSerialPort::EventDriven);而且是在on_pushButton_Send_clicked()的时候,岂不“Warning: Calling this function from the main (GUI) thread might cause your user interface to freeze.”?见:http://doc.trolltech.com/4.4/qiodevice.html#waitForBytesWritten
真正的原因我不清楚,猜是这样的:由于串口操作已被设为事件驱动模式,所以你再等它就报错。例如在windows里面用api操作串口的时候,是否用事件驱动可是写到操作系统的DCB(设备控制块)里面的。这时程序退出也无法把该模式改成轮询模式的,除非重启或把这个模式再改回来。
以前工作中也遇到过相关的问题,一个串口程序用的是轮询模式(win默认),另一个用事件驱动。两个程序单独拿到任一台机器上都没问题,就是在同一台机器上运行时,后面那个程序运行一次后,前面那个就不干活了,很是奇怪。费了好大个劲才把问题给找出来,就是串口工作模式的问题。后面那个程序在退出的时候没有把模式给设回默认值,前面那个在程序开始运行的时候没有把工作模式设置成自己用的那种。两个程序改哪个都可以,不过前面那个责任要大一些,”你在使用之前不检查或设置一下自己使用的模式吗“——因为后者无法保证总是把工作模式设回原样(例如异常退出的时候)。
所以工作模式这个地方还是要注意一下的。

<< 2 3 4 5 6 >> (4/24)

回复 发表
主题 版块