



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、MSm控件正在中文Windows下的通信題目成績與處置懲獎要收(1)摘要VB5.0/6.0的S通信控件供應了一系列尺度通信命令的接心,它答應創(chuàng)立串心毗鄰,但正在真踐通信硬件謀劃歷程中,S控件并沒有是像念像中那樣好謙戰(zhàn)簡單獨霸,出格是正在中文inds下通信時更會呈現(xiàn)題目成績。本文便S控件正在真踐利用中年夜要呈現(xiàn)的題目成績和編程本收停頓探供。閉鍵詞s控件串心通信處置懲獎1.S控件的根底實際一樣平常講去,策畫機皆有一個或多個串止端心,它們順次為1、2、.。那些串心借供應了內(nèi)部裝備與P停頓數(shù)據(jù)傳輸戰(zhàn)通信的通講,那些串心正在PU戰(zhàn)中設之間充任說明器的足色。當字符數(shù)據(jù)從PU收支給中設時,那些字符數(shù)據(jù)將被轉
2、換成串止比特流數(shù)據(jù);當汲與數(shù)據(jù)時,比特流數(shù)據(jù)被轉換為字符數(shù)據(jù)傳達給PU。再進一步講,正在獨霸系統(tǒng)圓里,inds用通信驅動步伐(.DRV)挪用API函數(shù)收支戰(zhàn)汲與數(shù)據(jù)。當用通信控件或聲明挪用API函數(shù)時,它們由.DRV說明并傳達給裝備驅動步伐。做為一個VB步伐員,要編寫通信步伐,只需曉得通信控件供應應inds通信API函數(shù)的接心便可,換句話講,只需設定戰(zhàn)監(jiān)視通信控件的屬性戰(zhàn)變亂便可。2.利用S控件停頓數(shù)據(jù)的汲與戰(zhàn)收支弄清楚以上根底屬性戰(zhàn)變亂后便可以開端編寫通信步伐了:正在VB5.0/6.0中新建一個工程文件,增減irsftntrl5.0組件,正在窗體Fr1中參減and命令按鈕并與名為dTest,
3、S控件與名為S1,寫進以下代碼:PrivateSubdTest_lik()S1.Prt=1設定1心IfS1.Prtpen=FalseThenS1.Settings=9600,N,8,19600波特率,無校驗,8位數(shù)據(jù)位,1位制止位S1.Prtpen=True翻開串心EndIfS1.utBufferunt=0渾空收支緩沖區(qū)S1.InBufferunt=0渾空汲與緩沖區(qū)收支字符數(shù)據(jù),留意必需用回車符(vbr)完畢S1.utput=Thisisagdbk!vbr撥挨德律風號碼或收支AT命令S1.utput=ATDT0294563622vbr收支字符數(shù)組數(shù)據(jù),留意ByteArray必需事前定義賦值Di
4、ByteArrayasbyte()定義靜態(tài)數(shù)組ReDiByteArray(1)重定義數(shù)組大小ByteArray(0)=0ByteArray(1)=1S1.utput=ByteArray收支字符數(shù)組數(shù)據(jù)EndSubPrivateSubS1_n()SeletaseS1.EventaseEvReEive汲與字符數(shù)據(jù)DiBufferAsVariantS1.InputLen=0當Inputde屬性值為0文本形式時,變量中露String型數(shù)據(jù)。當Inputde屬性值為1兩進制形式時,變量中露Byte型數(shù)組數(shù)據(jù)。S1.Inputde=InputdeBinaryBuffer=S1.Input汲與通信題目成績與
5、辦理要收3.1汲與的數(shù)據(jù)少于收支的數(shù)據(jù)假設經(jīng)由過程S控件一次性傳支較多的兩進制數(shù)據(jù),那末,很年夜要支到的數(shù)據(jù)沒有敷。例如正在設置為2400bps傳輸率的狀況下,一次性可以傳輸2048個字符數(shù)據(jù),那末正在年夜年夜皆狀況下一次只能支到1200個字符左右,那是因為新版的S32.X中存正在一個影響傳輸兩進制數(shù)據(jù)的Bug。32位indsAPI函數(shù)利用了幾個用TIEUTS構制暗示的限時變量,riteTtalTieutnstant即是其中的一個,它被inds內(nèi)部設定為5000即5秒,那個常量決議了正在通信驅動步伐制止傳輸之前消耗正在收支緩沖區(qū)中數(shù)據(jù)的工夫的黑黑。5秒鐘意味著通信速度為1200bps狀況下僅能
6、收支600個字符,2400bps狀況下僅能收支1200個左右的字符。終究結果上,正在一個緩沖區(qū)內(nèi)一次性收支更多的數(shù)據(jù)黑黑常年夜要的。VB5.0/6.0版本的S控件有一個新刪的緊張的屬性稱為ID,ID指的是當串心被翻開時,被API所挪用的串心句柄或標識表記標幟,那也意味著能利用API接心函數(shù)去建正那個常量。每次串心封閉后,inds會主動將之光復為5000,所以,每次翻開串心后需要從頭設定。以下是API聲明朝碼:TypeTIEUTSReadIntervalTieutAsLngReadTtalTieutultiplierAsLngReadTtalTieutnstantAsLngriteTtalTie
7、utultiplierAsLngriteTtalTieutnstantAsLngEndTypeDelareFuntinSetTieutsLibKernel32(ByValhFileAsLng,_lpTieutsAsTIEUTS)AsLngDelareFuntinGetTieutsLibKernel32(ByValhFileAsLng,_lpTieutsAsTIEUTS)AsLngDitieutsAsTIEUTSDiRetAsLngIf1.Prtpen=FalseThen1.Prtpen=TrueEndIf翻開串心后從頭設定串心句柄Ret=GetTieuts(1.ID,tieuts)Setsed
8、efaulttieutstieuts.ReadIntervalTieut=1tieuts.ReadTtalTieutultiplier=1tieuts.ReadTtalTieutnstant=1tieuts.riteTtalTieutultiplier=1tieuts.riteTtalTieutnstant=(1.utBufferSizeVal(1.Settings)*10000+1000Ret=SetTieuts(1.ID,tieuts)3.2如何收支年夜于128的字符數(shù)據(jù)正在通信步伐中,以單字符要收逐一收支數(shù)據(jù)時,每個數(shù)據(jù)范疇為0-255即十六進制的00-FF。正在單字符版本的英文inds
9、或DS版的BASI步伐中,只需要將響應的數(shù)據(jù)轉換成響應的字符收支到通信端心便可。但正在中文inds下卻止欠亨,假定正在中文inds下運轉以下步伐:DiiasIntegerFri=0T255S1.utput=hr(i)Nexti渴視正在汲與端獲得預期的0-255之間的數(shù)據(jù),成果倒是:前129個數(shù)據(jù)汲與準確,為0-128,背里127個數(shù)據(jù)為126個0戰(zhàn)一個255。形成那種成果的去由原果正在于中文inds利用的是單字節(jié)字符散(DBS)系統(tǒng)。DBS系統(tǒng)利用0-128之間的數(shù)字暗示ASII字符,年夜于128的數(shù)字僅做為前導字符,它只是暗示是一個非推丁語系的字符,而其真沒有代暗示真意義。上述步伐正在挪用H
10、R()函數(shù)時用到了DBS字符散,果而收死了此類缺點。那末,如何收支年夜于128的數(shù)據(jù)呢?謎底是利用字節(jié)數(shù)組,將以上步伐改成:DiyData(255)AsByteFri=0T255yData(i)=iNextiS1.utput=yDataDDEventsLpUntilS1.utBufferunt=0汲與歷程如何收支中翰朱符串VB5.0/6.0中可以直接把中翰朱符同等于英翰朱符收支,如:S1.utput=如今收支中文數(shù)據(jù)!,但那種要收收支的中文數(shù)據(jù)沒有克沒有及太少,收支緩沖區(qū)戰(zhàn)汲與緩沖區(qū)的大小需設定為中翰朱符的兩倍以上,并且收支與汲與系統(tǒng)所處的獨霸系統(tǒng)版本最好要齊整,沒有然會呈現(xiàn)汲與或收支緩沖區(qū)溢
11、出之類的缺點。那種要收可用于一樣平常要供沒有太下的場所。除上述要收中,借可以采納直接要收收支中翰朱符串。正在收支端將漢字或字符轉換為機器內(nèi)碼或區(qū)位碼數(shù)據(jù)數(shù)組,然后將轉換后的數(shù)據(jù)收支到串心,正在汲與端汲與到數(shù)據(jù)后,根據(jù)相反的順次將獲得的數(shù)據(jù)轉換為響應的漢字或字符。正在轉換歷程中,要用到位運算,如獲得漢字的內(nèi)碼后需要將下字節(jié)戰(zhàn)低字節(jié)分開,而VB5.0/6.0中并出有供應此類函數(shù),以下是供整數(shù)下、低字節(jié)的函數(shù)。PubliFuntinHiByte(aAsInteger)DibAsIntegerb=aAndHFF00b=b/256Ifb0Thenb=b+256HiByte=bEndFuntinPubli
12、FuntinLByte(aAsInteger)DibAsIntegerb=aAndHFFLByte=bEndFuntin3.4如何正在通信歷程中停頓延時正在某些通信歷程中,經(jīng)常需要正在收支完一組數(shù)據(jù)后停頓一段延時,以等待對圓處置懲獎上組數(shù)據(jù),以下是延時函數(shù)代碼。PubliSubDelay(PauseTieAsSingle)DiStartStart=Tier設定開端工夫DhileTierStart+PauseTieDEventsLpEndSub4.完畢語跟著策畫機利用范疇的沒有竭擴大,策畫機之間的少途通信譽得也越去越廣泛。做為RAD開收東西代表的VisualBasi一樣供應了一系列尺度通信命令的接心,它答應創(chuàng)立串心毗鄰,可以毗鄰到其他通信裝備如de、借可以收支命令、停頓數(shù)據(jù)交流和監(jiān)視戰(zhàn)響應
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年海東貨運考試題庫
- 入圍中標合同范本
- 公司注冊協(xié)議合同范本
- 公司家具搬遷合同范本
- 公路防撞墻勞務合同范本
- 公司合同股合同范本
- 保潔服裝購置合同范本
- UI軟件合同范本
- 正規(guī)家具合同范本
- 鄉(xiāng)政府廚師合同范本
- 河南文旅行業(yè)分析
- 民法典之侵權責任編培訓課件
- 研究生矩陣論試題及答案
- 肺葉切除術和全肺切除術的麻醉課件
- 初三語文月考質量分析
- 《天才少年維克多》
- CH:火花塞功能、結構類型及檢測
- 信訪工作課件
- 物資盤點工作步驟與細則
- “中小學教師全員遠程培訓”的實效性研究-以山西省J市為例的中期報告
- 視頻監(jiān)控入門基礎教程視頻監(jiān)控系統(tǒng)
評論
0/150
提交評論