基于ARM Contex-A8 Tiny210的简单室内人员数目监测系统实现(3)

来源:互联网 发布:付费语音问答源码 编辑:程序博客网 时间:2024/05/21 09:01

这一篇就把人员数目这个小系统结束了。接着上一篇,获取总数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什么的,随便了。

最后想要完整的程序的,可以评论留邮箱。微笑虽说还是希望多交流的

0 0