https://github.com/zytc2009/BigTeam_learning
分类: LINUX
2009-11-05 20:14:21
1.先把要用到的头文件建立,分别是QextSerialPort.h , QextSerialBase.h, Posix_QextSerialPort.h,并且要把静态库libqextserialport.a一同存放在所建立项目的目录中;
2.方便之处就在于可以直接继承它们,然后建立对象,并使用定义好的接口函数控制串口,例如:
//定义一个对象
QextSerialPort *port = new QextSerialPort("/dev/ttyS0");
//初始化端口
port->setBaudRate(BAUD38400);
port->setDataBits(DA
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_NONE);
port->setStopBits(STOP_1);
//初始化好了之后,查看,这时候端口还没打开
qDebug()< //使用接口函数打开串口 port->open(QIODevice::ReadOnly); qDebug()< //读串口 QByteArray array = port->readAll(); qDebug()< 简单的理解,明天继续学习。 附录: 1.关于foreach关键字: foreach(variables ,container)关键字是Qt对c++的一个扩展,主要用于按顺序历经容器(container)中的对象,例如: QLinkList QString str; foreach(str , list){ qDebug()< } 这样就可以历经list里存储的对象了,它的作用相当于标准C++中的iterator QLinkList QLinkListIterator while(i.hasNext()) { qDebug()< } 2.关于QTextCodec对象: 该对象主要用于非Unicode编码数据与Unicode编码数据之间的转换,例如: 假设现在有一个采用俄国的KOI8-R编码格式的字符串encodedString,现在将它转换成Unicode QByteArray encodedString = "Hello"; QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); QString string = codec->toUnicode(encodedString); 上述操作完成后,string里存储的就是Unicode编码的字符串了 相反的过程: QTextCodec *codec = QTextCodec::codecForName("UTP-8"); QByteArray encodedString = codec->fromUnicode(string); 操作完成后,encodedStirng里存储的就是从Unicode转换来的UTF-8编码的字符串了
1. 今天碰到的问题是,编译通过了,但程序总是意外退出,找不出原因,在编译的时候出现:nothing to be done for 'first',这个问题好办,先把从前的编译内容删除:
#make clean
然后在重新编译:
#make
2.第二个问题:段错误
google了一下,段错误主要是有指针引起,错误的使用了内存,指针越界例如:操作了已经释放的内存空间 ;没有申请内存空间被操作 ;或者内存越界等等。从这些地方入手就能找到问题。
3.地三个问题:Object::connect: No such slot*****
这个问题是因为头文件中没有声明:Q_OBJECT 导致的。
具体原因:如果自定义的一个class想使用信号和槽的机制,那么就必须在该class的头文件中声明Q_OBJECT。