資源簡介
開發環境:WIN7+QT4.7+QT CREATOR2.8+MINGW
已編譯通過測試平臺:XP、Win7、ubuntu、tiny210
技術實現:通過第三方串口通信類,解析協議并作出處理
基本功能:
1:支持16進制數據發送與接收。
2:支持windows下COM9以上的串口通信。
3:自動加載對應操作系統串口號。
4:實時顯示收發數據字節大小以及串口狀態。
高級功能:
1:可自由管理需要發送的數據,每次只要從下拉框中選擇數據即可,無需重新輸入數據。
2:可模擬設備回復數據,需要在主界面開啟模擬設備回復數據。當接收到設置好的指令時,立即回復設置的回復指令。例如指定收到0x16 0x00 0xFF 0x01需要回復0x16 0x00 0xFE 0x01,則只需要在SendData.txt中添加一條數據16 00 FF 01:16 00 FE 01即可。
3:可定時發送數據和保存數據到文本文件:,默認間隔5秒鐘,可更改間隔時間。
4:在不斷接收到大量數據時,可以暫停顯示數據來查看具體數據,后臺依然接收數據但不處理,無需關閉串口來查看已接收到的數據。
5:每次收到的數據都是完整的一條數據,而不是脫節的,做了延時處理。
6:一套源碼隨處編譯,無需更改串口通信類,已在XP/WIN7/UBUNTU/ARMLINUX系統下成功編譯并運行。
代碼片段和文件信息
#include?“frmmain.h“
#include?“ui_frmmain.h“
#include?“myhelper.h“
frmMain::frmMain(QWidget?*parent)?:
????QWidget(parent)
????ui(new?Ui::frmMain)
{
????ui->setupUi(this);
????myHelper::FormInCenter(this);
????this->InitForm();
}
frmMain::~frmMain()
{????
????delete?ui;
}
//監聽回車鍵
bool?frmMain::eventFilter(Qobject?*obj?QEvent?*event)
{
????if?(obj==ui->txtSend)
????{
????????if?(event->type()==QEvent::KeyPress)
????????{
????????????QKeyEvent?*keyEvent=static_cast(event);
????????????if?(keyEvent->key()==Qt::Key_Return?||?keyEvent->key()==Qt::Key_Enter)
????????????{
????????????????WriteMyCom();
????????????????return?true;
????????????}
????????}
????}
????return?Qobject::eventFilter(objevent);
}
void?frmMain::InitForm()
{????
????ReceiveCount=0;
????SendCount=0;
????IsShow=true;
????IsAutoClear=false;
????IsHexSend=true;
????IsHexReceive=true;
????IsDebug=false;
????QStringList?comList;//串口號
????QStringList?baudList;//波特率
????QStringList?parityList;//校驗位
????QStringList?dataBitsList;//數據位
????QStringList?stopBitsList;//停止位
#ifdef?Q_OS_WIN//如果是windows系統
????comList<<“COM1“<<“COM2“<<“COM3“<<“COM4“<<“COM5“<<“COM6“
??????????<<“COM7“<<“COM8“<<“COM9“<<“COM10“<<“COM11“<<“COM12“
?????????<<“COM13“<<“COM14“<<“COM15“;
#else//如果是unix或者其他系統
????comList<<“ttyUSB0“<<“ttyUSB1“<<“ttyUSB2“<<“ttyUSB3“<<“ttyUSB4“<<“ttyUSB5“
??????????<<“ttyS0“<<“ttyS1“<<“ttyS2“<<“ttyS3“<<“ttyS4“<<“ttyS5“<<“ttyS6“
?????????<<“ttyS7“<<“ttyS8“<<“ttyS9“;
#endif
????ui->cboxPortName->addItems(comList);
????ui->cboxPortName->setCurrentIndex(0);
????baudList<<“50“<<“75“<<“100“<<“134“<<“150“<<“200“<<“300“
???????????<<“600“<<“1200“<<“1800“<<“2400“<<“4800“<<“9600“
??????????<<“14400“<<“19200“<<“38400“<<“56000“<<“57600“
?????????<<“76800“<<“115200“<<“128000“<<“256000“;
????ui->cboxBaudRate->addItems(baudList);
????ui->cboxBaudRate->setCurrentIndex(12);
????parityList<<“無“<<“奇“<<“偶“;
#ifdef?Q_OS_WIN//如果是windows系統
????parityList<<“標志“;
#endif
????parityList<<“空格“;
????ui->cboxParity->addItems(parityList);
????ui->cboxParity->setCurrentIndex(0);
????dataBitsList<<“5“<<“6“<<“7“<<“8“;
????ui->cboxDataBit->addItems(dataBitsList);
????ui->cboxDataBit->setCurrentIndex(3);
????stopBitsList<<“1“;
#ifdef?Q_OS_WIN//如果是windows系統
????stopBitsList<<“1.5“;
#endif
????stopBitsList<<“2“;
????ui->cboxStopBit->addItems(stopBitsList);
????ui->cboxStopBit->setCurrentIndex(0);
????//讀取數據(采用定時器讀取數據,不采用事件,方便移植到linux)
????myReadTimer=new?QTimer(this);
????myReadTimer->setInterval(300);
????connect(myReadTimerSIGNAL(timeout())thisSLOT(ReadMyCom()));
????//發送數據
????mySendTimer=new?QTimer(this);
????mySendTimer->setInterval(5000);
????connect(mySendTimerSIGNAL(timeout())thisSLOT(WriteMyCom()));
????//保存數據
????mySaveTimer=new?QTimer(this);
????mySaveTimer->setInterval(5000);
????connect(mySaveTimerSIGNAL(timeout())thisSLOT(SaveMyCom()));
????//顯示日期時間
????my
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-12-12?20:13??mySerialPortTools\
?????文件?????????484??2013-07-25?21:20??mySerialPortTools\ConfigData.txt
?????文件???????13456??2013-12-17?11:00??mySerialPortTools\frmmain.cpp
?????文件????????2146??2013-12-17?11:00??mySerialPortTools\frmmain.h
?????文件???????18564??2013-12-17?11:02??mySerialPortTools\frmmain.ui
?????文件?????????461??2013-12-17?16:09??mySerialPortTools\main.cpp
?????文件???????92854??2013-08-01?16:24??mySerialPortTools\main.ico
?????文件????????7929??2013-07-22?20:41??mySerialPortTools\main.png
?????文件?????????120??2013-12-12?20:15??mySerialPortTools\main.qrc
?????文件??????????37??2013-04-18?10:27??mySerialPortTools\main.rc
?????文件???????11800??2013-12-16?15:41??mySerialPortTools\myhelper.h
?????文件?????????719??2013-12-17?14:18??mySerialPortTools\mySerialPortTools.pro
?????文件???????13375??2013-12-17?16:10??mySerialPortTools\mySerialPortTools.pro.user
?????文件???????32622??2013-10-15?10:29??mySerialPortTools\qextserialport.cpp
?????文件????????7241??2013-12-17?08:57??mySerialPortTools\qextserialport.h
?????文件????????2641??2013-10-15?10:29??mySerialPortTools\qextserialport_global.h
?????文件????????7131??2013-10-15?10:29??mySerialPortTools\qextserialport_p.h
?????文件???????15106??2013-10-15?10:29??mySerialPortTools\qextserialport_unix.cpp
?????文件???????14871??2013-10-15?10:29??mySerialPortTools\qextserialport_win.cpp
?????文件??????117337??2010-09-13?14:02??mySerialPortTools\qt_zh_CN.qm
?????文件?????????889??2013-12-17?12:19??mySerialPortTools\readme.txt
?????文件?????????234??2013-09-17?17:38??mySerialPortTools\SendData.txt
- 上一篇:Qt編寫守護進程
- 下一篇:二值化圖像輪廓及鏈碼直方圖
評論
共有 條評論