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

串口觸摸屏的設計與實現

2023-08-23 08:19:04吳艷玲周巖王志剛章良芳
電子制作 2023年14期
關鍵詞:功能

吳艷玲,周巖,王志剛,章良芳

(河北漢光重工有限責任公司,河北邯鄲,056017)

0 引言

可編程觸摸鍵盤在多功能標準顯控臺上的應用已經非常普遍,且可編程觸摸鍵盤的銷售情況比較樂觀,為拓展產品的功能、打破產品中的技術壁壘,在原來型號可編程觸摸鍵盤的結構尺寸基礎上,通過更換軟件運行平臺、調整設備的通訊方式等手段滿足不同條件下用戶要求,并在一定條件下替代原來型號可編程觸摸鍵盤應用于各標準臺上,銷售前景良好。

1 產品組成和工作原理

■1.1 產品組成

可編程觸摸鍵盤的組成包括結構組件、液晶盒組件、控制板組件和接口器件等。

(1)液晶盒組件部分包含前面板、液晶屏、屏蔽絲網玻璃組成;

(2)控制板組件包括核心控制板卡組成;

(3)接口器件包括電源接口和信號接口插座;

(4)結構件包含面板、后框架組成。

■1.2 產品工作原理

產品工作原理圖如圖2所示。

圖2 可編程觸摸鍵盤工作原理圖

圖1 可編程觸摸鍵盤分解圖

圖3 可編程觸摸鍵盤軟件工作流程

該設備具備兩組對外接口,分別為RS232串口信號及電源接口、USB調試接口。當調試時,可編程觸摸鍵盤通過USB調試接口進行調試。當正常工作時,可編程觸摸鍵盤通過RS232通信方式控制顯示傳輸的圖形、文字或按鍵等信息。W1線纜:核心主板輸出接口XP1的LVDS信號線纜與LED顯示屏的輸入接口相連接,實現顯示功能;W2線纜:核心主板輸出接口XP1的供電線纜與LED顯示屏輸入接口相連接,給LED顯示屏提供電壓;W3線纜:通過對外接口的XS1外部電源與核心主板的輸入接口XP2相連接,實現外部供電;W4線纜:通過對外接口的XS1外部電源與電阻屏的主控板相連,實現外部供電;W5線纜:電阻屏主板的輸出接口與五線電阻屏輸入口相連,實現通信功能;W6線纜:核心主板輸出接口XP5與五線電阻屏輸入接口XP4相連接 實現串口通訊;W7線纜:外部主機與核心主板XP6相連,實現通信;W8線纜:核心主板接口XP7與對外接口的XS1相連接 ,實現復位。

液晶盒組件由屏蔽絲網和液晶原屏粘接組成,主要作用為:

(1)圖形顯示功能;

(2)屏面板加固功能;

(3)電磁屏蔽功能;

(4)減小鏡面反射率。

核心控制板主要作用如下:

(1)接收上位機發(fā)送的控制指令,解析報文并將報文中的圖形、文字等信息轉化為顯示信號;

(2)接收觸摸屏指令,并判定觸摸位置是否符合要求;

(3)與上位機進行實時交互,完成設備的在線診斷等故障診斷功能。

2 軟件設計

軟件驅動設計支持Vxworks、道系統(tǒng)版本6.0、中標麒麟操作系統(tǒng)4.0、Vxworks及Windows XPE操作系統(tǒng)。

可編程觸摸鍵盤可通過RS232接口與主機相連,主機通過應用程序發(fā)送指令,指令通過可編程觸摸鍵盤的驅動程序傳遞報文至核心控制板,核心控制板解析主機發(fā)送的報文,并將報文中的圖形與文字信息顯示在顯示屏上。

■2.1 軟件配置列表

(1)可編程觸摸鍵盤底層應用程序;

(2)設備驅動程序;

(3)中間件程序;

(4)上位機應用程序。

■2.2 協議要求

(1)以通用軟件開發(fā)規(guī)范為準則;

(2)采用容錯、冗余等措施,確保軟件的可靠性、安全性和健壯性;

(3)采用由頂向下、層次化、模塊化結構設計方法。

■2.3 開發(fā)工具的選用

應用QT4.8.4開發(fā)平臺,遵循RS232通用協議。編程語言采用C、C++語言實現可編程觸摸鍵盤的嵌入式應用軟件開發(fā)。

■2.4 底層應用軟件的開發(fā)

可編程觸摸鍵盤的軟件開發(fā)采用基于優(yōu)先級的搶占式多任務調度策略;使用二進制信號量來實現任務間的同步與互斥;使用消息隊列和管道來實現任務間的通訊;編程語言使用C/C++程序設計語言,采用雙緩存技術進行圖形繪制、圖片處理功能的開發(fā);應用軟件可以根據需要進行擴充修改。

3 底層應用軟件的實現

可編程觸摸鍵盤具有強大的作圖和顯示功能,能夠實時、直觀、準確地獲取豐富的系統(tǒng)狀態(tài)和目標信息;能夠實時進行故障定位,并向用戶實時反饋可編程觸摸鍵盤的運行狀態(tài)。它將兼容了原有可編程觸摸鍵盤應用軟件的所有功能。其軟件框圖如圖4所示。

圖4 可編程觸摸鍵盤軟件框圖

TPKCore:觸摸屏核心類,目前包含TPKPage類、PConnet類、Graphic類的實例,及通信線程的具體實現;

TPKPage:頁面處理類,包含頁面的各種參數,背景顏色、是否使用、是否顯示等等;實現其功能的部分函數定義如下所示:

private:

bool m_bIsUsed;

bool m_bIsShow;

bool m_bIsClear;

unsigned int m_unRGB;

CPTKButton m_PTKMapBtn[ARY_BTN_MAX];

public:

QImage m_image;

void SetRGB(unsigned int unColor);

unsigned int GetRGB(void);

void SetUsed(bool bUsed = TRUE);

bool GetUsed(void);

void SetShow(bool bShow);

bool GetShow(void);

void SetClear(void);

bool GetClear(void);

void SetBTN(CPTKButton PTKBtn);

void DelBTN(int &nID);

void CreateBtmp(const int &nWidth , const int&nHigh);

CPTKButton* GetBTNByID(int nID);

CPTKButton* GetBTNAdr();

CPTKPage(void);

~CPTKPage(void);

像獲取按鍵ID設置按鍵等功能的部分代碼在QT開發(fā)環(huán)境下具體實現如下代碼所示:

CPTKButton* CPTKPage::GetBTNByID(int nID)

{

CPTKButton tmpBtn;

if (nID < 0 || nID >= ARY_BTN_MAX)

{

return NULL;

}

else

return &m_PTKMapBtn[nID];

}

void CPTKPage::SetBTN(CPTKButton PTKBtn)

{ CPTKButton tmpBtn;

int nID = PTKBtn.GetID();

m_PTKMapBtn[nID]= PTKBtn;

}

PConnect類:通訊管理,主要包括報文的解釋;

在QT中并沒有特定的串口控制類,使用第三方寫的qextserialport類。首先設置串口參數,如:波特率,數據位,奇偶校驗位,停止位,數據控制流控制,再設置串口號,打開串口等功能。實現其部分功能代碼如下所示:

PortSettings m_set,m_set1;

m_set.BaudRate = BAUD115200;

m_set1.BaudRate = BAUD9600;

m_set.DataBits = DATA_8;

m_set1.DataBits = DATA_8;

m_set.Parity = PAR_NONE;

m_set1.Parity = PAR_NONE;

m_set.StopBits = STOP_1;

m_set1.StopBits = STOP_1;

m_set.FlowControl = FLOW_OFF;

m_set1.FlowControl = FLOW_OFF;

m_set.Timeout_Millisec = 2;

m_set1.Timeout_Millisec = 2;

m_pPort=new QextSerialPort("\\.\com2",m_set,QextSerialPort::Polling);

m_pPort1=new QextSerialPort("\\.\com7",m_set1,QextSerialPort::Polling);

qDebug(" m_set1.Timeout_Millisec = %d ", m_set1.Timeout_Millisec);

m_pPort->open(QIODevice::ReadWrite);

m_pPort1->open(QIODevice::ReadWrite);

報文解析,例如:根據可編程觸摸鍵盤通信協議要求創(chuàng)建按鍵報文解析部分代碼如下所示:

int CPConnect::ML_SOCM_CreateCommnKey (char*pchBuf, int &nPage, CPTKButton &tpkBtn ,const int&nlen)

{ QRect rect;

nPage = pchBuf[10];

tpkBtn.SetID(pchBuf[11]);

rect.setLeft(GetInt(pchBuf+12));

rect.setTop(GetInt(pchBuf+14));

rect.setWidth(GetInt(pchBuf+16));

rect.setHeight(GetInt(pchBuf+18));

tpkBtn.SetPTKBtnRect(rect, GetRGB(pchBuf+21) ,GetRGB(pchBuf+24) , GetRGB(pchBuf+27));

tpkBtn.SetLightRGB(GetRGB(pchBuf+30));

tpkBtn.SetStrMsg(pchBuf+37,(int)pchBuf[36],GetRGB(pchBuf+33));

tpkBtn.SetKeyAttr((int)pchBuf[20]);

return N_PT_CRTBTN;

}

Graphic類:繪圖類,這些函數主要完成觸屏的圖形繪制的所有工作。

完成觸摸屏繪制工作的部分函數定義程序如下所示:例如 int is_chinese(char p)實現輸入的字符是否是中文;void TouchKey_CharShow(QPainter *p,CPTKButton*pPTKBtn)實現按鍵字符在哪個頁碼上顯示按鍵。

int is_chinese(char p);

void TouchKey_CharShow(QPainter*p,CPTKButton* pPTKBtn);

void CharPosition(short CharRows,short CharRow,short clength,CPTKButton *pPTKBtn , short&stCharX , short &stCharY);

void ShowChar(QPainter *p,short sALLlen,short clength,unsigned char *ShowCharSz,short cleft,short chigh,CPTKButton *pPTKBtn);

void InitDashVal(const int &nVal = 0);

void Int2Bin(unsigned int unValue, float fArray[]);

void DrawTransparentRect(QPainter *p , const QRect &rect , const unsigned int &color);

void DrawTransparentEllipse(QPainter *p , const QRect &rect, const unsigned int &color);

void DrawTransparentPolygon(QPainter *p ,QPointF * ptAry , const int &nLen, const unsigned int&color);

void DrawTransparentArc(QPainter *p , const QRect&rect ,const int &nStartAngle ,const int &nEndAngle,const unsigned int &color);

void DrawEllipse(QPainter *p ,const QRect &rect,const unsigned int &colorEdge ,const unsigned int&colorFill); //畫橢圓

void DrawLine(QPainter *p , const QPoint &ptA ,const QPoint &ptB , const unsigned int &color);

void DrawPolygon(QPainter *p , QPoint * ptAry ,const int &nLen, const unsigned int &colorEdge , const unsigned int &colorFill);

void DrawPie(QPainter *p, const QRect &rect , const QPoint &ptStart ,const QPoint &ptEnd, const unsigned int &colorEdge , const unsigned int &colorFill);

void DrawCommKey(QPainter *p , CPTKButton*pPTKBtn);

void DrawPicKey(QPainter *p ,CPTKButton*pPTKBtn );

void DrawUniteKey(QPainter *p ,CPTKButton*pPTKBtn );

PTKBTN類:按鍵處理類,包含按鍵的顏色、形狀、ID值和區(qū)域等屬性的設置,實現其功能的部分函數定義如下所示:

void SetPTKBtn(const QRect &rcBtn ,const unsigned int &unBtnRGB ,const unsigned int &unBtnLTRGB ,const unsigned int &unBtnRBRGB ,const int &nID );

void ChgPTKBtn(const int &nKeyAttr ,const unsigned int &unLightRGB ,char chBuf[], int nLen);

void SetPTKBtnRect(const QRect &rcBtn,const unsigned int &unBtnRGB ,const unsigned int&unBtnLTRGB ,const unsigned int &unBtnRBRGB);

void SetStrMsg(char chBuf[], int nLen , const unsigned int &unRGB);

void SetKeyAttr(const int &nKeyAttr);

void ChnKeyAttr(const char &chValue);

int GetKeyAttr();

void SetLightRGB(const unsigned int &unLightRGB);

unsigned int GetLightRGB();//獲取指示燈的顏色

unsigned int GetStrRGB(); //獲取字符顏色

char* GetStrPoint(); //獲取字符串指針

int GetStrLen(); //獲取字符串長度

void SetFont(const int &nSize , const int &nType);

float GetFontPound(void);

int GetFontSize(void);

int GetFontType(void);

void SetPTKPicBtn(const QRect &rcBtn ,const short &sUpPicID ,const short &sDnPicID ,const short&sInPicID);

bool GetPicFlag();

btnCLASS GetBtnClassFlag();

void SetBtnClassFlag(btnCLASS classBtn);

short GetUpPicID();

short GetDnPicID();

4 結論

可編程觸摸鍵盤在日常生產生活中已經推廣使用了很多年,隨著觸摸屏技術的日趨完善, 其可靠性和壽命都得到了大幅提高,在船舶自動化領域中具有觸摸功能的人機界面類產品數量及種類也在增多。本文首先介紹了可編程觸摸鍵盤的硬件組成及工作原理,詳細講解了該模塊開發(fā)的軟件設計,對軟件的設計原則、軟件環(huán)境、軟件組成和軟件功能,對每一個實現的類進行一一分析研究。在原JW06105型可編程觸摸鍵盤的結構尺寸基礎上,通過更換軟件運行平臺、調整設備的通訊方式等手段滿足不同條件下用戶要求,并在一定條件下替代JW06105型可編程觸摸鍵盤應用于各標準臺上,銷售前景良好。本文采用串口通信接口方式,在 Qt環(huán)境下實現了可編程觸摸鍵盤應用程序的開發(fā)。

猜你喜歡
功能
拆解復雜功能
鐘表(2023年5期)2023-10-27 04:20:44
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
基層弄虛作假的“新功能取向”
當代陜西(2021年21期)2022-01-19 02:00:26
深刻理解功能關系
鉗把功能創(chuàng)新實踐應用
關于非首都功能疏解的幾點思考
基于PMC窗口功能實現設備同步刷刀功能
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
中西醫(yī)結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 亚洲天堂网视频| 亚洲欧洲日韩久久狠狠爱| 国产精品无码AⅤ在线观看播放| 国产jizz| 亚洲一区二区精品无码久久久| 亚洲一区二区约美女探花| 亚洲AⅤ综合在线欧美一区| 亚洲精品第一页不卡| 国产尹人香蕉综合在线电影| 国产精品极品美女自在线看免费一区二区| 免费国产在线精品一区| 在线观看国产网址你懂的| 在线观看热码亚洲av每日更新| 国产麻豆va精品视频| 天堂成人av| 专干老肥熟女视频网站| 国产99精品久久| 日韩精品毛片| 国产精品无码制服丝袜| a级毛片免费看| 综合人妻久久一区二区精品| 亚洲国产天堂久久综合226114| 91国内外精品自在线播放| 亚洲成人精品在线| 夜色爽爽影院18禁妓女影院| 91黄色在线观看| 欧美www在线观看| 亚洲AV无码久久精品色欲| 国产在线精彩视频论坛| 国产精品七七在线播放| 久久国产精品娇妻素人| 欧美一区二区三区欧美日韩亚洲| 99九九成人免费视频精品| 亚洲第一区精品日韩在线播放| 亚洲精品色AV无码看| 国产精品99久久久久久董美香| 香蕉网久久| 天天色天天综合网| 白浆免费视频国产精品视频| 伊在人亞洲香蕉精品區| 久久婷婷六月| 国产精品久久久久鬼色| 一级毛片基地| 色AV色 综合网站| 激情午夜婷婷| 呦女亚洲一区精品| 99免费视频观看| 久久国产精品嫖妓| 国产精品免费久久久久影院无码| 亚洲人成网址| av性天堂网| 成人综合网址| 国产在线精彩视频论坛| 欧美日韩综合网| 91啦中文字幕| 国产成人福利在线| 亚洲二区视频| 国产成人精品三级| 视频一本大道香蕉久在线播放| 免费无码AV片在线观看中文| 2020久久国产综合精品swag| 亚洲日韩在线满18点击进入| 最新国产精品第1页| 亚洲欧美日韩精品专区| 久久婷婷人人澡人人爱91| 亚洲日韩高清无码| 国产视频资源在线观看| 五月六月伊人狠狠丁香网| 91福利在线观看视频| 99久久精品免费看国产电影| 国产大片喷水在线在线视频| 91在线视频福利| 精品久久高清| 日日拍夜夜操| 亚洲视频免费播放| 刘亦菲一区二区在线观看| 欧美一区精品| 国产性爱网站| 在线国产91| 国产福利一区二区在线观看| 最近最新中文字幕免费的一页| 波多野结衣一区二区三区AV|