freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

delphi串口通信編程(編輯修改稿)

2024-08-11 22:36 本頁面
 

【文章內(nèi)容簡介】 。 TDCB = _DCB。 DCB = _DCB。 PDCB = ^TDCB。 GetCommState BOOL SetCommState( HANDLE hFile, // 通信設(shè)備的句柄 LPDCB lpDCB // 設(shè)備控制塊結(jié)構(gòu)的地址 )。 Var FDCB: TDCB。 GetCommState(FHandle, FDCB)。 := 9600。 := EVENPARITY。 := ONESTOPBIT。 := 8。 SetCommState(FCOMHandle, FDCB)。 WriteFile BOOL WriteFile( HANDLE hFile, // 要寫入文件的句柄 LPCVOID lpBuffer,// 寫入文件中的數(shù)據(jù)的指針 DWORD nNumberOfBytesToWrite,// 寫入的字節(jié)數(shù) LPDWORD lpNumberOfBytesWritten, // 寫入總字節(jié)數(shù)的指針 LPOVERLAPPED lpOverlapped // overlapped I/O結(jié)構(gòu)的指針 )。 // lpOverlapped 通常用來作后臺工作時同步檢查之用,在串行通信中若不同時使用串行端口,則可不使用,設(shè)為nil var i:byte。 strlen:DWord。 xx:byte。 dat : array[0..99]of char。 begin dat[0] := chr($fe)。 dat[1] := chr($1B)。 dat[2] := chr($44)。 dat[3] := chr($03)。 dat[4] := chr($02)。 xx:=0。 for i:=1 to 4 do xx := xx xor ord(dat[i])。 dat[5] := chr(xx)。 //異或校驗 strlen:=6。 WriteFile(FHandle,dat,strlen,strlen,nil)。 end。 ReadFile BOOL ReadFile( HANDLE hFile, //要讀取文件的句柄 LPVOID lpBuffer, //接收數(shù)據(jù)的緩沖區(qū)地址 DWORD NumberOfBytesToRead, //讀取的字節(jié)數(shù) LPDWORD lpNumberOfBytesRead,//讀取總字節(jié)數(shù)的地址 LPOVERLAPPED lpOverlapped//OverLapped I/O結(jié)構(gòu)的地址 )。 Var dat : array[0..99]of char。 flag:dword。stepno:integer。 begin stepno:=0。 repeat Readfile(FHandle,dat,1,flag,nil)。 if flag0 then if dat1[0]=chr($fe) then stepno:=1。 until (stepno=1)or(flag=0)。 Readfile(FHandle,dat,1,flag,nil)。 length:=ord(dat1[0])。 //取長度 readfile(FHandle,dat1,length,flag,nil)。 end。 PurgeComm BOOL PurgeComm( HANDLE hFile, // 通信資源的句柄 DWORD dwFlags // 執(zhí)行動作 )。 dwFlags:指定執(zhí)行的工作 ? PURGE_TXABORT:終止目前所有的傳輸工作,立即返回,不管是否完完成傳輸?shù)牟僮? ? PURGE_RXABORT:終止目前所有的讀取工作,立即返回,不管是否完成讀取操作 ? PURGE_TXCLEAR:清除傳送緩沖區(qū)中的所有數(shù)據(jù) ? PURGE_RXCLEAR:清除接收緩沖區(qū)中的所有數(shù)據(jù) EscapeCommFunction BOOL EscapeCommFunction( HANDLE hFile, // 通信設(shè)備的句柄 DWORD dwFunc // 指定執(zhí)行的功能 )。 dwFunc:指定串口必須完成的工作 ? CLRDTR:將 DTR線路降成低電壓 ? CLRRTS:將 RTS線路降成低電壓 ? SETDTR:將 DTR線路升成高電壓 ? SETRTS:將 RTS線路升成高電壓 ? SETXOFF:當(dāng)接收到 Xoff字符時激活傳輸操作 ? SETXON:當(dāng)接收到 Xon字符時激活傳輸操作 ? SETBREAK:設(shè)置通信狀態(tài)為中斷(送出 BREAK信號) ? CLRBREAK:清除 BREAK信號,使傳輸動作繼續(xù) GetCommModemStatus 取得串口數(shù)字輸入線路電壓狀態(tài)可用該函數(shù) BOOL GetCommModemStatus( HANDLE hFile, // 通訊設(shè)備的句柄 LPDWORD lpModemStat // 控制寄存器中數(shù)值的地址 )。 lpModemStat:指向檢測到的狀態(tài)的參數(shù)地址, 32位長度 MS_CTS_ON: CTS (cleartosend) 引腳升至高電壓 MS_DSR_ON: DSR (datasetready) 引腳升至高電壓 MS_RING_ON: RI引腳升至高電壓 MS_RLSD_ON: DCD引腳升至高電壓 串口通信流程 打開通信端口 打開成功? 通信參數(shù)設(shè)置 其他函數(shù)操作 顯示錯誤信息 關(guān)閉串口 結(jié)束 開始 繼續(xù)操作? 否 是 通信測試 ?通信步驟 ?回路測試 通信步驟 1. 設(shè)置通信端口號碼 2. 使用 CreateFile函數(shù)打開通信端口 3. 設(shè)置通信協(xié)議 4. 設(shè)置傳輸速度等參數(shù) 5. 設(shè)置其它參數(shù) 6. 送出字符串或讀入字符串,使用 ReadFile及 WriteFile函數(shù) 7. 使用完畢后以 CloseHandle函數(shù)將通信端口關(guān)閉 回路測試 ?硬件設(shè)置 ?軟件實現(xiàn) 硬件設(shè)置 ?兩臺計算機,各使用其上的一個串口,一條 RS232兩邊都是母頭的線 ?一臺計算機,但擁有兩個串行通信口,一條 RS232兩邊都是母頭的線 ?一臺計算機,一個串行通信口,一條 RS232線,至少其中一邊是母頭 自動與事件 自動化的實現(xiàn) ?輪詢方式:不斷地發(fā)出詢問的信號給設(shè)備,要求設(shè)備返回計算機所要的信息 – 使用定時器( Timer組件),設(shè)定時間間隔,當(dāng)時間間隔一到,便會執(zhí)行原先放在定時器中的程序代碼 – 使用 While…Do 不斷地執(zhí)行程序代碼 ?線程方式:將串行通信的功能封裝在一個線程中,利用線程的不斷執(zhí)行而達到自動化的目的 建立多線程 工作原理: 操作系統(tǒng)將 CPU處理數(shù)據(jù)的時間切成很多的時間片 ( Time Slice),操作系統(tǒng)再將應(yīng)用程序的代碼加載 到 CPU中執(zhí)行,一旦這一小塊的時間執(zhí)行完畢后, 操作系統(tǒng)會將正在執(zhí)行的程序放一邊,然后再取另 外一個應(yīng)用程序進 CPU中執(zhí)行,一樣只執(zhí)行這一小 塊時間片,如此周而復(fù)始,所以見到了整個系統(tǒng)中 多任務(wù)的情況。 線程的實現(xiàn) 應(yīng)用程序執(zhí)行后即產(chǎn)生主線程,而主線程可以衍 生出其他線程。一個應(yīng)用程序可以依需要而造出 多個線程對象,每一個線程開始執(zhí)行后即被排入 CPU的執(zhí)行周期中,這些線程可能被建立后開始 執(zhí)行,直到應(yīng)用程序結(jié)束;也有可能執(zhí)行完工作 后在應(yīng)用程序結(jié)束前就結(jié)束掉,實際的情況看具 體需求而定。 Tthread類中常用的方法 ? Create:建立線程。使用此方法可建立線程,有 1個參數(shù),若設(shè)成 True,表示建立后不立即執(zhí)行;若設(shè)成False,則表示一建立后馬上執(zhí)行。 constructor Create(CreateSuspended: Boolean)。 ? Free:釋放線程,線程程序代碼將從內(nèi)存中被刪除 procedure Free。 ? Resume:執(zhí)行程序代碼。若線程暫停時,使用此指令再次激活 procedure Resume。 ? Suspend:暫停線程。將執(zhí)行中的線程暫停 procedure Suspend。 var SecondProcess: TMyThread。 { TMyThread is a custom descendant of TThread } begin SecondProcess := (True)。 { create suspended secondprocess does not run yet } := tpLower。 { set the priority to lower than normal } 。 { now run the thread } end。 第 4章 串行通信中的字符與字節(jié) 字符與字節(jié) 字節(jié)數(shù)據(jù)的傳送與接收 字符與字節(jié) ?字符和字節(jié)的差別 ?Delphi中的字符串種類及處理函數(shù) ?中英文字符串長度計算 字符和字節(jié)的差別 Windows支持的字符集有單字符集、雙字節(jié)字符集及 UniCode字符集,在西方國家使用 Windows系統(tǒng)基本使用單字符集,每一個字符都使用一個字節(jié)來表示;而亞洲國家由于字符無法單用一個字節(jié)表示,因此使用雙字節(jié)字符集,其中每個字符使用雙字節(jié)字符集。 UniCode UniCode涵蓋了世界上所有國家的字符碼,每個字符用一個唯一的內(nèi)碼來表示,其特點是所有的字符以兩個字節(jié)表示,不僅中文使用兩個字節(jié),英文也使用兩個字節(jié) 串口通信過程中,如果傳送的是一個英文字節(jié)組成,只要一個字節(jié)就可以將信息傳送出去;如果傳送的是雙字節(jié)的字符(如中文),完整的字符傳送就必須是兩個字節(jié)。 Delphi中的字符串種類及處理函數(shù) Chr(x):返回 X參數(shù)的字符, Chr(97)=?a? ord(?a?)=97 Or
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1