999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Socket 通信的流水號刻印設備的開發與應用

2021-03-05 14:57:43鄧明利
科技創新導報 2021年27期
關鍵詞:數據庫

鄧明利

摘要:隨著工業大數據、信息化、數字化發展,計算機實現人機交互功能的重要性、實用性也越來越突出。而以Socket通訊方式實現對計算機PC與激光刻印控制器的通訊,具有傳輸速度快、數據傳輸穩定、性價比高等優點,采用開源的SQLite3數據庫作為數據存儲,有體積小、訪問速度快等優點。本文重點介紹以Socket通訊方式實現零件毛坯流水號刻印設備的開發與應用。

關鍵詞: Socket通訊激光刻印設備SQLite3數據庫計算機

Development and Application of Serial Number Printing Equipment Based on Socket Communication

DENG Mingli

(GAC Motor Co, Ltd., Guangzhou,Guangdong Province,511434 China)

Abstract: With the development of industrial big data, informatization and digitization, the importance and practicability of human-computer interaction are becoming more and more prominent. The Socket communication between computer PC and laser engraving controller has the advantages of fast transmission speed, stable data transmission and high cost performance. The open source SQLite3 database is used as data storage, which has the advantages of small volume and fast access speed. This paper focuses on the development and application of part blank serial number printing equipment by socket communication.

Key Words: Socket communication;Laser printing equipment; SQLite3 database; Computer

1 概述

本文主要介紹采用C++語言為基礎開發一套基于Socket通訊的控制軟件,實現普通PC機與激光刻印控制器的完美組態,實現工件毛坯的流水號按工藝要求自動刻印流水號。根據軟件的唯一算法,保障刻印流水號的不重號。作業記錄與SQLite3數據庫表同步更新保存,對工件流動提供了有效的追溯功能[1]。

2  硬件構成

系統主要由計算機、IPG激光控制器和振鏡構成,如圖1所示。

3 ?軟件部分

采用C++語言為基礎開發人機對話控制軟件,基于Windows桌面系統環境,采用C++語言及SQLite3數據庫開發而成,實現了普通PC機與激光刻印控制器完美組態。有刻印工藝參數修改、刻印歷史數據查詢等功能。采用密碼窗口登陸安全保護機制,有效地保護了設備數據安全。本軟件采用數據唯一算法,保證刻印流水號不重號。作業記錄與數據庫表同步更新保存,對工件流動提供了有效的追溯功能[2-4]。

4 ?Socket通訊介紹

Socket也叫套接字,用來實現網絡通信(如圖2)。socekt是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,socket其實就是一個門面模式,它把復雜的tcp/ip協議族隱藏在socket接口后面,對用戶來說,一組簡單的接口就是全部,讓socket去組織數據,以符合指定的協議,兩個套接字進程運行在同一個機器上,可以通過訪問同一個文件系統間接完成通信。本項目中激光刻印控制器作為客戶機套接字,PC機作為服務器套接字,進行信息的傳遞處理[5-7]。

5 ?相關程序源代碼

5.1 SQLite3數據庫的連接關鍵代碼

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

db.setDatabaseName(QApplication::applicationDirPath()+"/LGDKJ.dat");

//如果本目錄下沒有該文件,則會在本目錄下生成,否則連接該文件

if (!db.open()) {

QMessageBox::warning(0, QObject::tr("Database Error"),

db.lastError().text());

returnfalse;

}

5.2 ?建立Socket通訊關鍵代碼

m_tcpServer = new QTcpServer(this);

client_tcpSocket= new QTcpSocket(this);

tcpClient_list= new QList<QTcpSocket*>; if( m_tcpServer->listen(QHostAddress::Any,(Sport.toInt()))==true)

//監聽任何連上8888端口的ip ? ? ? ? ? ? connect(m_tcpServer,&QTcpServer::newConnection,this,[=](){

client_tcpSocket = m_tcpServer->nextPendingConnection();

//得到每個連進來的socke

tcpClient_list->append( client_tcpSocket);

//記錄連接的socket

QString ?ip = client_tcpSocket ->peerAddress().toString();

qint16 port = client_tcpSocket->peerPort();

QString info1 =QString("客戶端[%1:%2]連接成功").arg(ip).arg(port);

//連接的socket的IP,port ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? connect(client_tcpSocket,&QTcpSocket::readyRead,this,&KYSYSTEM::readMessage);

//有可讀的信息,觸發讀函數槽

connect(client_tcpSocket,&QTcpSocket::disconnected,this,[=](){

//主動和客戶端斷開連接

QString info1 =QString("客戶端[%1:%2]斷開連接").arg(ip).arg(port);

//連接的socket的IP,port

Socket_Disconnected();

});

});

}

else {QMessageBox::information(this,tr("錯誤提示:"), tr("服務器創建失敗,請檢查8888號端口是否被占用!"),QMessageBox::Ok);

}

}

5.3 ?流水號唯一算法代碼

void KYSYSTEM:: getSNO()//獲取流水號

{

QSqlQuery query4;

query4.exec(QString("select max(Ser_No) from oplist where PT_day ='%1'") .arg(strD));

if (query4.next())

{

int MaxNO =query4.value(0).toInt();

SerNO=MaxNO+1;

}

}

5.4 ?PC機通過socket通訊將刻印碼發給激光控制器

void KYSYSTEM:: readMessage()

{

for(int i=0;i<tcpClient_list->size();i++){

//獲取當前套接字是否有數據

if(tcpClient_list->at(i)->bytesAvailable()){

QByteArray buf=tcpClient_list->at(i)->readAll();

QString ss=QVariant(buf).toString();

if (ss=="TCP:Give me string")//(ss=="Marking finish\r\n")

{

QString str2 =PTmes+"\r\n";

tcpClient_list->at(i)->write(str2.toUtf8().data());

}

}

5.5 ?刻印內容發送完畢后關閉socket通訊

void KYSYSTEM::Socket_Disconnected()

{

for(int i = 0; i < tcpClient_list->size(); i++)

{

QTcpSocket *item = tcpClient_list->at(i);

int temp = item->socketDescriptor();

if(-1 == temp)

{

tcpClient_list->removeAt(i);

//如果有客戶端斷開連接, 就將列表中的套接字刪除

item->deleteLater();

return;

}

}

return;

}

6結語

本項目通過Socket通訊實現了普通PC機與激光刻印控制器完美組態,通過軟件內部唯一流水號算法,實時將刻印信息發給激光控制器完成特定流水號刻印工作。本文重點介紹了Socket通訊的原理、共享了關鍵源代碼以及在本項目中的實例應用,充分展現了該通訊方式的穩定性、實用性和簡便性。

參考文獻

[1]傅玥,蔡興富.Socket網絡編程-基于TCP協議或UDP協議[J].中國新通信,2020,22(8):57-58.

[2]蔣達.基于Socket的網絡接口編程[J].辦公自動化,2018,23(23):29-30,32.

[3]林志紅.Android Socket網絡編程體會[J].科學技術創新,2017(28):140-141.

[4]練坤玉.訂單型紡織生產計劃調度系統設計與應用研究[D].合肥:合肥工業大學,2019.

[5]薛哲,張功學,何凱,等.基于Socket通信的AGV上位機控制系統[J].現代機械,2021(5):99-102.

[6]陳敬靜.SQLite數據庫研究與可視化[D].南京:南京郵電大學,2020.

[7]崔天鑫.SQLite與Access在JDBC編程中的對比研究[J].電腦編程技巧與維護,2019(11):4-6,15.

1896501186274

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 国产欧美综合在线观看第七页| 网友自拍视频精品区| 人妖无码第一页| 亚洲成人播放| 亚洲欧洲综合| 欧美亚洲一二三区| 美女无遮挡免费网站| 国产成人精品视频一区视频二区| 欧美一区二区啪啪| 国产精品漂亮美女在线观看| 国产超薄肉色丝袜网站| 婷婷伊人五月| 色综合久久久久8天国| 伊人福利视频| 另类专区亚洲| 伊人福利视频| 在线人成精品免费视频| 免费国产一级 片内射老| 亚洲综合久久成人AV| 久久国产精品国产自线拍| 国产成人午夜福利免费无码r| 久久精品国产免费观看频道 | 制服丝袜在线视频香蕉| 精品中文字幕一区在线| 国产精品妖精视频| 毛片视频网址| 欧美日韩中文国产va另类| 手机看片1024久久精品你懂的| 91口爆吞精国产对白第三集| 久久精品aⅴ无码中文字幕| 国产黄在线免费观看| 日韩欧美中文在线| 国产91小视频在线观看| 中文字幕在线不卡视频| 国产成人无码久久久久毛片| 国产婬乱a一级毛片多女| 国产精品欧美日本韩免费一区二区三区不卡| 日韩毛片免费| 天堂在线视频精品| 欧美精品亚洲日韩a| 精品日韩亚洲欧美高清a| 欧美精品在线看| 视频一区视频二区中文精品| 日韩国产欧美精品在线| 伊人久久大香线蕉影院| 国产粉嫩粉嫩的18在线播放91| 99精品热视频这里只有精品7| 久久久亚洲色| 国产一级视频久久| 四虎影视国产精品| a毛片基地免费大全| 波多野结衣AV无码久久一区| 在线播放国产一区| 一本色道久久88| 三上悠亚精品二区在线观看| 亚洲日韩高清无码| 亚洲av色吊丝无码| 国产精品中文免费福利| 国产SUV精品一区二区6| 99热这里只有免费国产精品| 国产成人亚洲欧美激情| 中日无码在线观看| 亚洲香蕉伊综合在人在线| 秋霞国产在线| 四虎影视库国产精品一区| 免费看的一级毛片| 激情综合婷婷丁香五月尤物| 精品一区二区三区波多野结衣| 日韩欧美高清视频| 五月婷婷综合网| 精品国产中文一级毛片在线看 | 91青草视频| 亚洲AV无码一区二区三区牲色| 一级爱做片免费观看久久| 福利一区三区| 麻豆精品国产自产在线| 色综合热无码热国产| 中文一级毛片| 在线高清亚洲精品二区| 91探花在线观看国产最新| 国产福利2021最新在线观看| 狼友av永久网站免费观看|