这一篇就把人员数目这个小系统结束了。接着上一篇,获取总数count后,需要通过串口传送到PC端。
首先说下Tiny210的串口发送:
arm qt下好像还没有跟windows平台下一样的写的比较完整的串口程序,所以分享个自用的。
定义一下,串口打开标志和函数声明
public:
int fd;
int openSerialPort();
void send_to_port();
接着是打开串口、串口定义的程序(就是自用的),这里devicename要根据自己的来,简单的方法是查看Tiny210上自带的comping或者串口助手。另外,要包含个
#include <termio.h>
的头文件。
int pnc::openSerialPort()
{
fd = -1;
const char *devName = "/dev/ttySAC3";
fd = ::open(devName, O_RDWR|O_NONBLOCK);
if (fd < 0) {
return -1;
}
termios serialAttr;
memset(&serialAttr, 0, sizeof serialAttr);
serialAttr.c_iflag = IGNPAR;
serialAttr.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr.c_cc[VMIN] = 1;
if (tcsetattr(fd, TCSANOW, &serialAttr) != 0) {
return -1;
}
return fd;
}
接下来,就是在主程序中打开串口了
fd = openSerialPort();
if (fd < 0)
{
QMessageBox::warning(this, tr("Error"), tr("Fail to open serial port!"));
return ;
}
串口打开完成后,需要做的就是在人员数目发生变化时将count发送出去,这个很简单
send_to_port();
这句写在上一篇的switch语句后面就可以了,在主程序中。
void pnc::send_to_port(){
char buf[10];
sprintf(buf, "%d", count);//
::write(fd,buf,strlen(buf));
}
到这里,Tiny210板子上的串口发送工作就完成了。剩下的是PC端的串口接收,由于windows下qt的串口程序很成熟,有很多分享,我也会分享一个。
直接介绍接收程序,也比较简单
struct PortSettings myComSetting = {BAUD115200,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};
myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);
myCom ->open(QIODevice::ReadWrite);
//int count;
//count=0;
//a->setText(QString::number(count));
connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));
QObject::connect(quit,SIGNAL(clicked()),this,SLOT(close()));}
void pnc::readMyCom() {
QString temp = myCom->readAll();
//Alln->setText("");
//QString count;
//count=temp;
Alln->append(temp);
同样串口号自己看设备管理器,串口的头文件自己include一下。
#include "win_qextserialport.h"
PC端的界面,简单一画就ok。
这样这个室内人员数目的小系统就算完成了,最后的通信方式,可以自选WiFi什么的,随便了。
最后想要完整的程序的,可以评论留邮箱。虽说还是希望多交流的