无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
用 VC 在win95下編寫用于串行通訊的程序
中華工控網(wǎng)
收藏本文     查看收藏
用 VC 在win95下編寫用于串行通訊的程序 </P><P> <BR> 源自<img align=absmiddle src=pic/url.gif border=0><a target=_blank href=http://www.sixthnet.com/netech/articles/195.htm>http://www.sixthnet.com/netech/articles/195.htm<;/a></P><P> 頭文件(.H) </P><P> #include "StdAfx.h" </P><P> #define GWL_PGPSINFO 0 <BR> #define GPSEXTRABYTES sizeof( LONG ) </P><P> #define MAXPORTS 4 </P><P> #define CN_SEND WM_USER+100 </P><P> #define RXQUEUE 4096 <BR> #define TXQUEUE 4096 </P><P> // cursor states </P><P> #define CS_HIDE 0x00 <BR> #define CS_SHOW 0x01 </P><P> // Flow control flags </P><P> #define FC_DTRDSR 0x01 <BR> #define FC_RTSCTS 0x02 <BR> #define FC_XONXOFF 0x04 </P><P> // ascii definitions </P><P> #define ASCII_BEL 0x07 <BR> #define ASCII_BS 0x08 <BR> #define ASCII_LF 0x0A <BR> #define ASCII_CR 0x0D <BR> #define ASCII_XON 0x11 <BR> #define ASCII_XOFF 0x13 </P><P> // data structures </P><P> typedef struct tagGPSINFO <BR> { <BR> HANDLE idComDev; <BR> BYTE bPort; <BR> BOOL fConnected; <BR> BYTE bByteSize,bParity,bStopBits; <BR> DWORD dwBaudRate; </P><P> HANDLE hPostEvent,hWatchThread,hWatchEvent; <BR> HWND hTermWnd; <BR> DWORD dwThreadID; <BR> OVERLAPPED osWrite,osRead; <BR> } GPSINFO, *PGPSINFO ; </P><P> #define COMDEV( x ) (x -> idComDev) <BR> #define PORT( x ) (x -> bPort) <BR> #define CONNECTED( x ) (x -> fConnected) <BR> #define BYTESIZE( x ) (x -> bByteSize) <BR> #define PARITY( x ) (x -> bParity) <BR> #define STOPBITS( x ) (x -> bStopBits) <BR> #define BAUDRATE( x ) (x -> dwBaudRate) </P><P> #define POSTEVENT( x ) (x -> hPostEvent) <BR> #define HTHREAD( x ) (x -> hWatchThread) <BR> #define THREADID( x ) (x -> dwThreadID) <BR> #define WRITE_OS( x ) (x -> osWrite) <BR> #define READ_OS( x ) (x -> osRead) </P><P> // function prototypes (private) </P><P> LRESULT NEAR CreateGPSInfo(HWND,BYTE nPort=1); <BR> BOOL NEAR DestroyGPSInfo(); </P><P> int NEAR ReadCommBlock(LPSTR,int); <BR> BOOL NEAR WriteCommBlock(LPSTR,DWORD); <BR> BOOL NEAR OpenConnection(); <BR> BOOL NEAR SetupConnection(); <BR> BOOL NEAR CloseConnection(); </P><P> // function prototypes (public) </P><P> DWORD FAR PASCAL CommWatchProc(LPSTR); <BR> CPP實現(xiàn)部分: </P><P> #include "StdAfx.h" <BR> #include "Com.h" </P><P> HWND hGPSWnd=NULL; <BR> PGPSINFO npGPSInfo=NULL; </P><P> LRESULT NEAR CreateGPSInfo(HWND hWnd,BYTE nPort) <BR> { <BR> if (NULL==(npGPSInfo=(PGPSINFO)LocalAlloc(LPTR,sizeof(GPSINFO)))) <BR> return ((LRESULT)-1) ; </P><P> hGPSWnd=hWnd; </P><P> COMDEV(npGPSInfo)=0; <BR> CONNECTED(npGPSInfo)=FALSE; <BR> PORT(npGPSInfo)=nPort; <BR> BAUDRATE(npGPSInfo)=CBR_9600; <BR> BYTESIZE(npGPSInfo)=8; <BR> PARITY(npGPSInfo)=NOPARITY; <BR> STOPBITS(npGPSInfo)=ONESTOPBIT; </P><P> WRITE_OS(npGPSInfo).Offset=0; <BR> WRITE_OS(npGPSInfo).OffsetHigh=0; <BR> READ_OS(npGPSInfo).Offset=0; <BR> READ_OS(npGPSInfo).OffsetHigh=0; </P><P> // create I/O event used for overlapped reads / writes </P><P> READ_OS(npGPSInfo).hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); <BR> if (READ_OS(npGPSInfo).hEvent==NULL) <BR> { LocalFree( npGPSInfo ) ; <BR> return ( -1 ) ; <BR> } <BR> WRITE_OS(npGPSInfo).hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); <BR> if (NULL==WRITE_OS(npGPSInfo).hEvent) <BR> { CloseHandle(READ_OS(npGPSInfo).hEvent); <BR> LocalFree(npGPSInfo) ; <BR> return (-1) ; <BR> } </P><P> return ( (LRESULT) TRUE ) ; <BR> } </P><P> BOOL NEAR DestroyGPSInfo() <BR> { <BR> if (!npGPSInfo) return (FALSE); </P><P> if (CONNECTED(npGPSInfo)) CloseConnection(); </P><P> CloseHandle(READ_OS(npGPSInfo).hEvent); <BR> CloseHandle(WRITE_OS(npGPSInfo).hEvent); <BR> CloseHandle(POSTEVENT(npGPSInfo)); </P><P> LocalFree(npGPSInfo); <BR> return (TRUE); <BR> } </P><P> BOOL NEAR OpenConnection() <BR> { <BR> char szPort[15]; <BR> BOOL fRetVal; <BR> HCURSOR hOldCursor,hWaitCursor; </P><P> HANDLE hCommWatchThread; <BR> DWORD dwThreadID; <BR> COMMTIMEOUTS CommTimeOuts; </P><P> if (!npGPSInfo) return (FALSE); </P><P> hWaitCursor=LoadCursor(NULL,IDC_WAIT) ; <BR> hOldCursor=SetCursor(hWaitCursor) ; </P><P> wsprintf(szPort,"COM%d",PORT(npGPSInfo)); </P><P> if ((COMDEV(npGPSInfo)=CreateFile(szPort,GENERIC_READ|GENERIC_WRITE, <BR> 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, <BR> NULL))==(HANDLE)-1) <BR> return ( FALSE ) ; <BR> else <BR> { SetCommMask(COMDEV(npGPSInfo),EV_RXCHAR); <BR> SetupComm(COMDEV(npGPSInfo),4096,4096); <BR> PurgeComm(COMDEV(npGPSInfo),PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); <BR> CommTimeOuts.ReadIntervalTimeout=0xFFFFFFFF; <BR> CommTimeOuts.ReadTotalTimeoutMultiplier=0; <BR> CommTimeOuts.ReadTotalTimeoutConstant=1000; <BR> CommTimeOuts.WriteTotalTimeoutMultiplier=0; <BR> CommTimeOuts.WriteTotalTimeoutConstant=1000; <BR> SetCommTimeouts(COMDEV(npGPSInfo),&CommTimeOuts); <BR> } </P><P> fRetVal=SetupConnection(); </P><P> if (fRetVal) <BR> { CONNECTED(npGPSInfo)=TRUE; <BR> if (NULL==(hCommWatchThread=CreateThread((LPSECURITY_ATTRIBUTES)NULL, <BR> 0,(LPTHREAD_START_ROUTINE)CommWatchProc, <BR> (LPVOID)NULL,0,&dwThreadID))) <BR> { CONNECTED(npGPSInfo)=FALSE; <BR> CloseHandle(COMDEV(npGPSInfo)); <BR> fRetVal=FALSE; <BR> } <BR> else <BR> { THREADID(npGPSInfo)=dwThreadID; <BR> HTHREAD(npGPSInfo)=hCommWatchThread; <BR> EscapeCommFunction(COMDEV(npGPSInfo),SETDTR); <BR> } <BR> } <BR> else <BR> { CONNECTED(npGPSInfo)=FALSE; <BR> CloseHandle(COMDEV(npGPSInfo)); <BR> } </P><P> SetCursor(hOldCursor); <BR> return (fRetVal); <BR> } </P><P> BOOL NEAR SetupConnection() <BR> { BOOL fRetVal; <BR> DCB dcb; </P><P> if (!npGPSInfo) return(FALSE); </P><P> dcb.DCBlength=sizeof(DCB); </P><P> GetCommState(COMDEV(npGPSInfo),&dcb); </P><P> dcb.BaudRate=BAUDRATE(npGPSInfo); <BR> dcb.ByteSize=BYTESIZE(npGPSInfo); <BR> dcb.Parity=PARITY(npGPSInfo); <BR> dcb.StopBits=STOPBITS(npGPSInfo); </P><P> dcb.fOutxDsrFlow=FALSE; <BR> dcb.fDtrControl=DTR_CONTROL_ENABLE; </P><P> dcb.fOutxCtsFlow=FALSE; <BR> dcb.fRtsControl=RTS_CONTROL_ENABLE; <BR> dcb.fInX=dcb.fOutX=FALSE; <BR> dcb.fBinary=TRUE; <BR> dcb.fParity=TRUE; </P><P> fRetVal=SetCommState(COMDEV(npGPSInfo),&dcb); <BR> return (fRetVal); <BR> } </P><P> BOOL NEAR CloseConnection() <BR> { <BR> if (!npGPSInfo) return(FALSE); </P><P> CONNECTED(npGPSInfo)=FALSE; </P><P> SetCommMask(COMDEV(npGPSInfo),0); <BR> while(THREADID(npGPSInfo)!=0); </P><P> EscapeCommFunction(COMDEV(npGPSInfo),CLRDTR); <BR> PurgeComm(COMDEV(npGPSInfo),PURGE_TXABORT|PURGE_RXABORT| <BR> PURGE_TXCLEAR|PURGE_RXCLEAR); <BR> CloseHandle(COMDEV(npGPSInfo)); </P><P> return (TRUE); <BR> } </P><P> int NEAR ReadCommBlock(LPSTR lpszBlock,int nMaxLength) <BR> { <BR> BOOL fReadStat ; <BR> COMSTAT ComStat ; <BR> DWORD dwErrorFlags; <BR> DWORD dwLength; <BR> DWORD dwError; </P><P> if (!npGPSInfo) return(FALSE); </P><P> ClearCommError(COMDEV(npGPSInfo),&dwErrorFlags,&ComStat); <BR> dwLength=min((DWORD)nMaxLength,ComStat.cbInQue); </P><P> if (dwLength>0) <BR> { fReadStat=ReadFile(COMDEV(npGPSInfo),lpszBlock, <BR> dwLength,&dwLength,&READ_OS(npGPSInfo)); <BR> if (!fReadStat) <BR> { if (GetLastError()==ERROR_IO_PENDING) <BR> { OutputDebugString("\n\rIO Pending"); <BR> while(!GetOverlappedResult(COMDEV(npGPSInfo),&READ_OS(npGPSInfo),&dwLength,TRUE)) <BR> { dwError=GetLastError(); <BR> if(dwError == ERROR_IO_INCOMPLETE) continue; <BR> } </P><P> } <BR> else <BR> { dwLength=0; <BR> ClearCommError(COMDEV(npGPSInfo),&dwErrorFlags,&ComStat); <BR> } <BR> } <BR> } <BR> return ( dwLength ) ; <BR> } </P><P> BOOL NEAR WriteCommBlock(LPSTR lpByte,DWORD dwBytesToWrite) <BR> { BOOL fWriteStat; <BR> DWORD dwBytesWritten; <BR> DWORD dwErrorFlags; <BR> DWORD dwError; <BR> COMSTAT ComStat; </P><P> if (!npGPSInfo) return(FALSE); </P><P> fWriteStat=WriteFile(COMDEV(npGPSInfo),lpByte,dwBytesToWrite, <BR> &dwBytesWritten,&WRITE_OS(npGPSInfo)); </P><P> if (!fWriteStat) <BR> { if(GetLastError()==ERROR_IO_PENDING) <BR> { while(!GetOverlappedResult(COMDEV(npGPSInfo), <BR> &WRITE_OS(npGPSInfo),&dwBytesWritten,TRUE)) <BR> { dwError=GetLastError(); <BR> if(dwError == ERROR_IO_INCOMPLETE) continue; <BR> else <BR> { ClearCommError(COMDEV(npGPSInfo),&dwErrorFlags,&ComStat); <BR> break; <BR> } <BR> } <BR> } <BR> else <BR> { ClearCommError(COMDEV(npGPSInfo),&dwErrorFlags,&ComStat); <BR> return ( FALSE ); <BR> } <BR> } <BR> return ( TRUE ) ; </P><P> } </P><P> DWORD FAR PASCAL CommWatchProc(LPSTR) <BR> { DWORD dwEvtMask; <BR> OVERLAPPED os; <BR> int nLength; <BR> BYTE abIn[1024]; </P><P> memset(&os,0,sizeof(OVERLAPPED)); </P><P> // create I/O event used for overlapped read </P><P> os.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); <BR> if (os.hEvent==NULL) <BR> { MessageBox(NULL,"Failed to create event for thread!","GPS Error!",MB_ICONEXCLAMATION|MB_OK); <BR> return ( FALSE ) ; <BR> } </P><P> if (!SetCommMask(COMDEV(npGPSInfo),EV_RXCHAR)) return (FALSE); </P><P> while (CONNECTED( npGPSInfo)) <BR> { dwEvtMask=0 ; <BR> WaitCommEvent(COMDEV(npGPSInfo),&dwEvtMask,NULL); </P><P> if ((dwEvtMask&EV_RXCHAR)==EV_RXCHAR) <BR> { do <BR> { if (nLength=ReadCommBlock((LPSTR)abIn,1024)) <BR> { //WriteCommBlock((LPSTR)abIn,nLength ); <BR> *(abIn+nLength)=0; <BR> ::SendMessage(hGPSWnd,CN_SEND,nLength,(LONG)(LPSTR)abIn); <BR> } <BR> } <BR> while ((nLength>0)&&(CONNECTED( npGPSInfo))); <BR> } <BR> } </P><P> CloseHandle(os.hEvent); <BR> THREADID(npGPSInfo)=0; <BR> HTHREAD(npGPSInfo)=NULL; <BR> return(TRUE); <BR> } <BR> 一般使用的順序是: <BR> CreateGPSInfo(被通知的窗口句柄,串口端口號1或2); <BR> OpenConnection();//建立聯(lián)結它會調用SetupConnection <BR> DestroyGPSInfo();//解除聯(lián)結它會調用CloseConnection </P><P> 可以用ReadCommBlock/WriteCommBlock來讀/寫串口 <BR> CommWatchProc是監(jiān)視串口的線程,由OpenConnection建立 </P><P> 當串口有數(shù)據(jù)來的時侯,它會通知'被通知的窗口句柄'的窗口數(shù)據(jù)傳到的消息(自定義的) <BR> ∶:SendMessage(hGPSWnd,CN_SEND,nLength,(LONG)(LPSTR)abIn); </P><P> <BR>
 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

公司名稱: 中華工控網(wǎng)
聯(lián) 系 人: 客服中心
電  話: 0755-26546361
傳  真: 0755-26585268
地  址: 深圳市南山區(qū)創(chuàng)業(yè)路現(xiàn)代城華庭1棟6A
郵  編: 518054
主  頁:
 
該廠商相關技術文摘:
智能儀器儀表的發(fā)展特點與前景分析
電動機性能虛擬儀器測試系統(tǒng)設計與實現(xiàn)
視頻監(jiān)控護航高鐵安全運營
基于PLC,觸摸屏及變頻器對吹膜機的改造
永宏PLC應用于自助圖書借還終端機
基于永宏PLC的GSM通訊原理及其應用
改善汽車生態(tài)學、安全性和舒適性,四大測試分析是關鍵
改善汽車生態(tài)學、安全性和舒適性,四大測試分析是關鍵
數(shù)控技術的發(fā)展趨勢及產(chǎn)業(yè)化
數(shù)控技術發(fā)展戰(zhàn)略與發(fā)展途徑的思考
用Energid 的軟件進行機器人的抓取和操作
如何借助RFID技術升級企業(yè)信息管理水平
更多文摘...
立即發(fā)送詢問信息在線聯(lián)系該技術文摘廠商:
用戶名: 密碼: 免費注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡

關于我們 | 聯(lián)系我們 | 廣告服務 | 本站動態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網(wǎng)客服熱線:0755-86369299
版權所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved

无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频
精品久久精品| 亚洲制服一区| 日韩高清不卡在线| 日韩精品久久理论片| 97久久亚洲| 国产激情综合| 日韩一区二区三区免费播放| 日韩欧美视频专区| 97se亚洲| 亚洲一级二级| 久久精品网址| 日韩成人午夜精品| 国产亚洲精品美女久久 | 亚洲伊人影院| 精品欧美视频| 黄色不卡一区| 精品国产亚洲一区二区在线观看| 日韩不卡一区二区三区| 99视频+国产日韩欧美| 成人片免费看| 日韩高清中文字幕一区| 亚洲精品97| 国产精品入口久久| 91精品国产成人观看| 免费一区二区三区在线视频| 亚洲不卡系列| 精品视频网站| 理论片午夜视频在线观看| 日韩中文av| 久久影院资源站| 国产亚洲精品v| 精品三区视频| 免费美女久久99| 免费污视频在线一区| 美女精品一区| 免费日韩一区二区| 福利一区二区三区视频在线观看| 蜜桃视频在线观看一区| 蜜桃久久久久久| 色综合www| 国产精品99视频| 日韩欧美美女在线观看| 欧美特黄一区| 欧洲一级精品| 丁香婷婷久久| 亚洲激情二区| 亚洲中午字幕| 亚洲小说欧美另类婷婷| 日本aⅴ亚洲精品中文乱码 | 伊人久久大香线蕉av不卡| av在线日韩| 久久精品国产99久久| 欧美精品导航| 欧美一级一区| 伊人www22综合色| 久久亚洲图片| 最新国产精品视频| 国产精品三级| 欧美日韩视频网站| 四虎8848精品成人免费网站| 亚洲伦乱视频| 综合国产精品| 精品免费av一区二区三区| 亚洲专区在线| 婷婷精品视频| 少妇精品在线| 视频一区欧美精品| 国产日韩1区| 一区二区三区四区在线观看国产日韩| 日韩精品久久理论片| 国产福利片在线观看| 国产精品欧美一区二区三区不卡| 91久久在线| 国产亚洲一区二区手机在线观看 | 色婷婷成人网| 99精品一区| 日韩综合小视频| 亚洲我射av| 激情不卡一区二区三区视频在线| 日本国产欧美| 久久青草久久| 中文字幕在线视频网站| 国产精品a级| 国产一区日韩欧美| 亚洲深夜视频| 成人欧美一区二区三区的电影| 六月婷婷一区| 亚洲天堂1区| 电影91久久久| 国产精品亚洲综合在线观看| 久久精品99国产精品| 91精品电影| 亚洲激情欧美| 亚洲综合在线电影| 亚洲www啪成人一区二区| 日韩精品欧美大片| 国产综合激情| 日韩精品免费一区二区三区| 欧美日韩一视频区二区| 只有精品亚洲| 99re国产精品| 日韩中文av| 久久福利毛片| 国产精品一区毛片| 蜜桃久久久久久| 伊人精品在线| 久久中文字幕av| 久热re这里精品视频在线6| 国产精品原创| 美女少妇全过程你懂的久久| 91超碰国产精品| 日本99精品| 捆绑调教日本一区二区三区| 97精品国产99久久久久久免费| 精品三级在线观看视频| 日韩高清国产一区在线| 亚洲神马久久| 国产欧美日韩免费观看| 国产精品大片免费观看| 国产精品麻豆成人av电影艾秋| 亚洲一区二区小说| 欧美中文字幕| 在线亚洲免费| 免费在线播放第一区高清av| 久久高清精品| 亚洲高清毛片| 91麻豆精品激情在线观看最新 | 国产精品亚洲片在线播放| 青草国产精品| 久久国产免费看| 精品久久久网| 999国产精品永久免费视频app| 午夜一区在线| 久久99精品久久久野外观看| 国产精品久久久一区二区| 你懂的国产精品| 国产成人精品亚洲线观看| 国产亚洲精品v| 国产精品久久久久久久久妇女| 91日韩在线| 激情婷婷综合| 一本大道色婷婷在线| 日本麻豆一区二区三区视频| 国产99精品一区| 中文字幕一区二区三区在线视频| 国产视频一区二| 日韩在线精品| 三级在线观看一区二区| 91精品久久久久久久久久不卡| 91精品电影| 国产精品一区高清| 欧美午夜精彩| 国产精品流白浆在线观看| 亚洲日产av中文字幕| 香蕉国产精品| 欧美日韩中文| 一区二区小说| 国产精品主播在线观看| 欧美日韩一区二区综合| 欧美日韩国产观看视频| 国产精品日韩久久久| 久久不卡国产精品一区二区| 亚洲不卡视频| 亚洲另类视频| 日韩综合一区二区| 亚洲精品美女| 日韩精品免费一区二区三区| 亚洲va久久久噜噜噜久久| 老司机久久99久久精品播放免费| 国产精品嫩模av在线| 欧美午夜不卡影院在线观看完整版免费| 久久男女视频| 国产精品自在| 国产黄色精品| 在线综合视频| 婷婷中文字幕一区| 亚洲天堂黄色| 欧美激情综合| 婷婷五月色综合香五月| 亚洲福利久久| 国产精品视区| 日韩欧美美女在线观看| 精品一区免费| 久久成人一区| 日韩在线观看一区| 久久久久国产一区二区| 99久久久国产精品美女| 国产精品一区二区美女视频免费看 | 999视频精品| а√天堂8资源中文在线| 欧美日韩高清| 日韩电影免费网站| 国产精品高潮呻吟久久久久| 日韩中文字幕不卡| 女同性一区二区三区人了人一| 亚洲综合精品| 国模 一区 二区 三区| 综合日韩av| 国产一区二区三区久久| 久久精品av麻豆的观看方式|