亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 48.htm

?? VB的一些網絡編程的例子,個人認為還不錯。大家一起來研究一下.
?? HTM
字號:
<p>利用Visual Basic實現無線通訊</p>
<p>中科院空間中心 姜棣昭</p>
<p></p>
<p>  一、概述</p>
<p>  Visual Basic 是Mcrosoft公司推出的強有力的系列開發軟件之一,而且以其實用、方便、快捷、開發周期短、廣泛而強大的功能越來越被廣大編程人員所親賴,廣為流傳,似乎有些專業的編程人員放棄了Visaul C++ 而改用了Visaul Basic之類的RAD編程工具,盡管Visaul C++在靈活性、代碼緊湊、運行速度快及底層開發等方面Visaul Basic無法比擬的,但編寫C++應用程序過長的調試和開發周期確實有點不適應當今的應用程序開發環境。</p>
<p>  在Visaul Basic開發工具中提供了大量的控件(或稱控制、組件)供編程人員使用,可以方便的利用這些組件中的屬性、方法、語言等以事件驅動方式開發應用程序,還可以利用WINDOWS SDK中的API中的應用程序接口等工具開發應用程序。VB還自帶一個控件開發軟件包CDK,利用CDK可以開發自己需要的Controls 。在通訊問題中我們可以使用VB提供的通訊控件或調用WINDOWS API通訊函數。</p>
<p></p>
<p>  二、 VB串行通訊</p>
<p>  利用VB開發通信程序主要的方法有兩種,一是利用VB本身提供的控件(CONTRALS),另一種方法是利用WINDOWS API應用程序接口,WINDOWS API 主要提供了三個動態連接庫KERNEL.EXE、USER.EXE、GDI.EXE供開發人員調用,其中KERNEL.EXE 主要包括一些底層操作函數,完成一些資源管理、任務、內存等操作,USER.EXE包含了一些與WINDOWS管理有關的函數,如通訊、菜單、消息、光標、插入符、計時器以及絕大多數非顯示函數,GDI.EXE圖形設備接口庫,主要內容為與設備輸出有關的函數。和串口通訊有關系的函數BuilidCommDCB、ClearCommBreak、SetCommBreak、FlushComm、GetCommError、GetCommState、WriteComm、ReadComm、SetCommState、CloseComm等均在 \Windows\system 子目錄下的USER.EXE動態連接庫中,在VB調用之前應該先在全局變量定義處聲明API通訊函數、定義常量。</p>
<p>  在我們的實踐中,用VB 控件實現通訊的方法比調用SDK的API動態連接庫的方法更加方便、快捷,而且用較少的代碼可以實現相同的功能,這就是用VB 控件實現通訊的優點所在,下面主要介紹一下利用VB 控件實現無線通訊的問題。</p>
<p>  在VB的控件工具箱中,提供了一個使用非常方便的串行通訊控件MSComm,它全面的提供了使用RS-232串行通訊上層開發的所有細則,它既可以使用查詢方式又可以使用事件驅動方式來完成串行通訊。</p>
<p>  在MSCOMM控件中提供了一系列的編程要素,這些編程要素有屬性、事件和函數,利用這些要素編程,可以實現幾乎全部的串行通訊功能。在VB中提供了30多個屬性、一個事件和兩個函數,其中主要的屬性為CommPort、Settings、PortOpen、InBufferSize、OutBufferSize、InBufferCount、OutBufferCount、Break、InputLen、SThreshold、Rthreshold、RTSEnable、CommEvent、ParityReplace、NullDiscard等。</p>
<p>  控件MSComm提供了一個事件OnComm,該事件可以截取串口的任何消息,轉入事件處理程序。WINDOWS操作系統的運行機制為事件驅動,在VB編程中事件驅動方式同樣是軟件運行的主要方式之一,當沒有事件發生時程序可能處于某一循環、等待或任務狀態當事件發生時,程序轉入事件處理程序。每個控件下都有一些事件供程序員使用,MSCOMM控件中OnComm事件是唯一的,OnComm可以撲獲通訊時發生的串口事件和錯誤信息,當有串口事件或錯誤發生時,VB會立刻觸發一個OnComm事件,程序就會自動轉入OnComm事件處理程序中。CommEvent屬性是OnComm事件的指示器,該屬性在設計時不能使用,在程序運行時為只讀,CommEvent 屬性存有最近的事件或錯誤的數值代碼,可以在程序中隨時讀取CommEvent 屬性值來了解通訊的狀況,OnComm事件是和CommEvent屬性密切相關、一起使用,當任何一個OnComm 事件或錯誤發生時,都會使得CommEvent屬性值改變,在OnComm事件處理過程中,可以通過判斷CommEvent屬性值,對于不同的屬性值轉入不同的事件處理過程,一般采用的辦法是SELECT CASE…….END SELECT。由于在無線通訊中沒有使用有線MODEM,CommEvent 屬性涉及到的有線MODEM的屬性數值代碼和本項目無關。</p>
<p></p>
<p>  三、 無線傳輸接口和協議</p>
<p>  在我們的項目中用Intel 586/120的PC機為上位機,通訊程序使用VB開發的,用8031單片機做CPU、 AD574作數據采集的下位機,上位機作數據接收和數據處理中心站,下位機實時采集數據之后,進行簡單的數據平均計算,當收到上位機發來的發送指令之后,開始向上位機發送數據。</p>
<p>  上位機無線通訊接口使用的是一塊插在ISA擴展槽中的無線MODEM ZX-02,無線MODEM與KENWOOD公司的TK-378無線對講機相連,數字信號通過無線MODEM調制成為音頻信號之后,送到TK-378無線對講機上的MIC口。</p>
<p>  下位機有一臺外置無線MODEM ZX-01,單片機的數字信號經過串口送入無線MODEM,MODEM對信號進行調制后送入KENWOOD TK-378無線對講機上,接收數據的方式與上述相同,由TK-378收到信號后,經無線MODEM將音頻信號解調為數字信號進入計算機或單片機處理。</p>
<p>  由于在我們的通訊網絡中,并非點對點的通訊,而是一點對多點的廣播式的通訊方式,因此,我們在通訊協議中曾加站點識別碼,每個站有自己特定的識別碼,給下位機編碼可以保證網絡通訊的有序性。</p>
<p>  由于無線通訊可能會有空間的燥聲干擾,因此,我們采取了多項抗干擾措施,首先是包頭識別碼,在發送了傳輸命令之后,下位機開始以打包的形式傳輸數據,每一包都有一個包頭和包尾識別碼,假如識別碼有誤,這一次的傳輸為不正常數據處理。打包發送另外一個原因是TK-270對講機連續發送數據的時間不能超過一分鐘,超過一分鐘就會自動中斷發送,因此,當數據較多時不打包連續發送的時間就會超過一分鐘,發送數據中斷。</p>
<p>  在下位機中有32KB的NVRAM,可以保存32KB的數據該數據可以由上位機發送清除命令的方法清楚掉,當32KB滿了以后,最早放入的數據就會丟掉,由于我們的采樣速率不高,在慢采的情況下,兩天的時間才能存滿,這樣不論上位機或下位機出現斷電、死機等問題,數據不會丟失掉。</p>
<p>  在發送過程中,由于干擾的原因數據傳輸出現錯誤,上位機不給下位機發送清楚命令,數據保存在NVRAM中,下次上位機發送傳輸命令之后,這些數據還會重新發送到上位機來,這樣可以避免了線路帶來的數據損失,</p>
<p>從下位機向上位機傳送的代碼有ASCII碼和BCD碼,測量數據部分用的是BCD碼主要是為了節省資源,由上位機向下位機發送的命令均為ASCII碼。</p>
<p>  我們還對字段長度和包的長度作了規定,一個字段有多少個字節,一包有多少個字段組成,如果數據最后不夠一整包,也按照整字段的格式作為半包發送過來。</p>
<p>  考慮到下位機的分散性,可能固定在偏遠、不宜接近的地帶,用上位機對下位機發送校時命令并校時的方法來統一網絡時間。</p>
<p>  由于我們使用的無線MODEM 所限,傳輸速率只能達到2400BPS,而在我們的使用中1200BPS、N PARITY、8 DATA、1 STOP為較穩定狀態。</p>
<p>  上位機向下位機發送的命令有校時命令并校時、請內存命令、發送數據命令、快采命令和慢采命令等。發送命令有兩種發送方式,即手動方式和自動方式,自動方式是由定時器來完成的。</p>
<p>  在無線通訊過程中,除了規定合理的協議之外,為了保證通訊的正確性,在數據發送時適當的增加延時是必要的,當速度較慢的計算機向速度較快的計算機發送數據時應適當的增加延時。</p>
<p></p>
<p>  四、 應用實例</p>
<p>  由于該項目的軟件源代碼較長,我們只拿出和串口通訊有關的程序片段來供大家參考。在我們的工作中實踐了三種通訊方式,即查詢方式、事件驅動方式、事件驅動轉查詢方式,這三種方式各有利敝,查詢方式有方便可靠的特點,可利用協議或設定時鐘進入和退出查詢狀態,但不是資源的有效利用方式,事件觸發方式對于定長通訊非常有效,但定長通訊在有些場合不實用,事件驅動轉查詢方式既有事件驅動的特點又有轉查詢方式特點,可以說是集二者之長,有效利用資源。下面著重介紹事件驅動轉查詢方式。</p>
<p>  首先在公共模塊中定義和ONCOMM有關的參數:</p>
<p>.</p>
<p>.</p>
<p>.</p>
<p>Global Const MSCOMM_EV_RECEIVE = 2'收到 Rthreshold 個字符。該事件將持續產生直到用 Input 屬性從接收緩沖區中刪除數據。</p>
<p>Global Const MSCOMM_ER_RXOVER = 1008'接受緩沖區溢出。接收緩沖區沒有空間。</p>
<p>Global Const MSCOMM_ER_TXFULL = 1010 '傳輸緩沖區已滿。傳輸字符時傳輸緩沖區已滿</p>
<p></p>
<p>  在啟動過程中對串口和輸入輸出緩沖區初始化:</p>
<p>Sub Form_Load ()</p>
<p> .</p>
<p> .</p>
<p> .</p>
<p> comm1.Settings = "1200,n,8,1" '設定波特率1200bps,無校驗,8位數據位,1位停止位</p>
<p> comm1.CommPort = 1 '串口1</p>
<p> comm1.InputLen = 1 '一次從輸入緩沖區中讀取一個字符</p>
<p> comm1.InBufferSize = 512 '定義輸入緩沖區為512字節(bytes)</p>
<p> comm1.InBufferCount = 0 '清空輸入緩沖區</p>
<p> comm1.OutBufferCount = 0 '清空輸出緩沖區</p>
<p> comm1.PortOpen = True '啟動串口</p>
<p>End Sub</p>
<p>  下面是發送數傳命令的子過程,啟動該過程由一個定時器控制:</p>
<p>Sub sample_data ()</p>
<p> .</p>
<p> .</p>
<p> .</p>
<p> comm1.RTSEnable = True '將Modem的PTT置高,同時打開對講機</p>
<p> Call time_delay '適當延時</p>
<p> comm1.Output = "*TRNS" + Chr$(13) '發送命令</p>
<p> Do '該循環用來檢測命令是否全部發送完畢</p>
<p> Loop Until comm1.OutBufferCount = 0</p>
<p> Call time_delay '適當延時</p>
<p> comm1.RTSEnable = False '將Modem的PTT置低,將對講機改為接受狀態</p>
<p> comm1.InBufferCount = 0 '清空接收緩沖區 </p>
<p> comm1.RThreshold = 1 '設定RThreshold = 1,等待出發OnComm事件</p>
<p> .</p>
<p> .</p>
<p> .</p>
<p>End Sub</p>
<p>  在OnComm編寫接收和處理代碼:</p>
<p>Sub Comm1_OnComm ()</p>
<p> Select Case comm1.CommEvent</p>
<p>  .</p>
<p>  .</p>
<p>  .</p>
<p>  Case MSCOMM_ER_RXOVER '接收緩沖區溢出。可插入相應的代碼</p>
<p>  Case MSCOMM_ER_TXFULL '傳輸緩沖區已滿。可插入處理代碼</p>
<p>  Case MSCOMM_ER_RECEIVE '收到1個字符,可進入以下處理過程</p>
<p>   comm1.RThreshold = 0 '不再響應OnComm事件,轉入查尋方式接收</p>
<p>   ii = 0</p>
<p>   iii = 0: sinn = Chr$(42): sinn1 = Chr$(42) '初始化變量</p>
<p>   Do</p>
<p>    duration = Timer + .2 '設定超時退出的時間值</p>
<p>    iii = iii + 1</p>
<p>    sinn1 = sinn</p>
<p>    Do '該循環判斷輸入緩沖區是否有數據或是否超時</p>
<p>     'dummy% = DoEvents()</p>
<p>    Loop Until comm1.InBufferCount >= 1 Or Timer >= duration</p>
<p>    If Timer >= duration Then </p>
<p>     iii = iii - 1</p>
<p>     overtime = True '確定超時退出,并非正常退出</p>
<p>     Exit Do</p>
<p>    End If</p>
<p>    sinn = comm1.Input '正常退出,取值付給sinn</p>
<p>    If header_er = 0 Then</p>
<p>     GoTo test_header</p>
<p>    End If</p>
<p>    If Asc(sinn) > 175 Or Asc(sinn) < 160 Then '判斷包頭是否正確</p>
<p>     iii = 0</p>
<p>     GoTo station_number_er '包頭不正確,丟掉該數據</p>
<p>    End If</p>
<p>test_header: header_er = 0 '包頭正確,接受到包頭,header_er=0</p>
<p>    ssin(iii) = sinn'----put date into string dimantion</p>
<p>    station_number = Asc(ssin(1)) </p>
<p>    package_number = Asc(ssin(2))</p>
<p>    sentence_number = Asc(ssin(3))</p>
<p>    last_character = Asc(ssin(iii))</p>
<p>station_number_er: </p>
<p>   Loop Until sinn1 = Chr$(10) and sinn = Chr$(13) '當收到正確的包尾0A,0D后退出</p>
<p>   If overtime = True Then '如果超時非正常退出</p>
<p>    overtime = False</p>
<p>    comm1.RThreshold = 1 '重新啟動OnComm事件,等待接收下一包</p>
<p>    timer6_wait.Enabled = True</p>
<p>    GoTo endsub</p>
<p>   End If</p>
<p>  以下是接收數據正確以后的數據處理程序,包括解碼和計算這里從略。</p>
<p>   .</p>
<p>   .</p>
<p>   .</p>
<p>   If package_number = 1 Then '如果接收數據正確,而且是最后一包</p>
<p>    timer2_sample.Enabled = True '啟動控制數傳命令定時器</p>
<p>    comm1.RTSEnable = True '置PTT為高</p>
<p>    comm1.OutBufferCount = 0 '清空輸出緩沖區</p>
<p>    Call time_delay '適當延時</p>
<p>    comm1.Output = "*MACK" + Chr$(13) '發送清內存命令</p>
<p>    Do '檢測是否發送完畢</p>
<p>    Loop Until comm1.OutBufferCount = 0</p>
<p>    Call time_delay '適當延時</p>
<p>    comm1.RTSEnable = False '置PTT為低</p>
<p>   End If</p>
<p>   If package_number > 1 Then '如果不是最后一包</p>
<p>    comm1.RThreshold = 1 '啟動OnComm準備接收下一包</p>
<p>    timer6_wait.Enabled = True </p>
<p>   End If</p>
<p>endsub: header_er = 1: comm1.InBufferCount = 0 '--empty inbuffer protect from bed data on the inbuffer</p>
<p> End Select</p>
<p>End Sub</p>
<p></p>
<p>  五、 結論</p>
<p>  根據我們實踐工作的經驗,在本項目中無線通訊和有線通訊的主要區別在于用MSCOMM控件的RTSEnable屬性對無線Modem的PTT操作以及適當的延時,延時的長短和使用的計算機有關。在開發的過程中,把握好上述兩條,設定一個合理的通信協議,選擇合適的硬件是至關重要的。</p>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91久久久久久一区二区| 成人性生交大片免费看视频在线| 成人午夜电影小说| 国产精品久久久久国产精品日日| 美腿丝袜一区二区三区| 欧美一区二区三区视频在线| 天天色综合成人网| 91精品国产aⅴ一区二区| 精品一区二区三区免费毛片爱 | 久久免费午夜影院| 丁香激情综合五月| 日韩国产精品91| 欧美精品乱码久久久久久按摩| 国产精品亚洲成人| 亚洲精品乱码久久久久久黑人| 在线亚洲高清视频| 国产精品一品二品| 性久久久久久久| 国产精品久久久久久久蜜臀| 欧美伦理电影网| 岛国精品在线观看| 免费视频最近日韩| 一区二区免费在线| 久久久99久久| 日韩欧美国产电影| 欧美日韩国产电影| 91首页免费视频| 国产精品1024| 高清shemale亚洲人妖| 亚洲午夜视频在线观看| 中文字幕中文字幕中文字幕亚洲无线 | 精品美女被调教视频大全网站| 91亚洲永久精品| 福利电影一区二区三区| 老司机午夜精品| 蜜臀av在线播放一区二区三区| 亚洲人精品午夜| 亚洲精品视频在线观看免费| 国产蜜臀97一区二区三区| 欧美成人video| 精品噜噜噜噜久久久久久久久试看 | 亚洲精品五月天| 国产精品久久久久久亚洲伦| 91精品欧美久久久久久动漫| 欧美性色aⅴ视频一区日韩精品| 91视视频在线观看入口直接观看www| 成人一区二区视频| 欧美性猛交xxxx乱大交退制版| 91久久香蕉国产日韩欧美9色| 欧洲精品在线观看| 欧美三级一区二区| 欧美xxx久久| 亚洲毛片av在线| 裸体在线国模精品偷拍| 国产盗摄女厕一区二区三区| 91影院在线观看| 欧美精品vⅰdeose4hd| 国产日韩欧美高清在线| 亚洲激情在线激情| 国v精品久久久网| 欧美三级午夜理伦三级中视频| 久久久久久毛片| 日韩影院精彩在线| 91麻豆精东视频| 国产亚洲一二三区| 久久成人18免费观看| 欧美人与z0zoxxxx视频| 久久久91精品国产一区二区精品| 天堂久久一区二区三区| 精品一区二区免费在线观看| 一本久久a久久精品亚洲| 国产亚洲欧美日韩在线一区| 亚洲色图一区二区| 99视频一区二区| 国产精品国产三级国产普通话蜜臀| 天天色天天操综合| 在线电影欧美成精品| 午夜精品福利一区二区三区av | 日韩一区二区三区三四区视频在线观看| 1024成人网色www| 成人精品高清在线| 国产欧美日产一区| 成人av网站大全| 亚洲日本韩国一区| 风间由美一区二区三区在线观看 | a级高清视频欧美日韩| 国产精品美女久久久久久久久 | 国产无遮挡一区二区三区毛片日本| 成人av在线一区二区| 91精品国产综合久久久久久漫画 | 精品中文字幕一区二区| 亚洲激情图片小说视频| 99v久久综合狠狠综合久久| 国产女同互慰高潮91漫画| 国产成人在线视频播放| 一区视频在线播放| 欧美日韩在线免费视频| 亚洲午夜av在线| 久久综合色综合88| 26uuu国产一区二区三区| 99国产精品久久久久久久久久| 午夜免费久久看| 欧美国产综合一区二区| 制服丝袜在线91| 成人一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 极品少妇一区二区三区精品视频| 国产亚洲人成网站| 欧美自拍偷拍午夜视频| 国产高清精品在线| 国产精品 欧美精品| 国产一区啦啦啦在线观看| 免费一级片91| 精品一区二区三区香蕉蜜桃| 男女男精品视频网| 精品一区二区三区av| 国产一区二区成人久久免费影院 | 日韩高清在线观看| 日韩在线一区二区| 日本亚洲欧美天堂免费| 久久久午夜精品理论片中文字幕| 欧美在线观看视频一区二区| 欧美精品vⅰdeose4hd| 欧美性猛交xxxxxxxx| 日韩欧美一级特黄在线播放| 日韩午夜激情免费电影| 精品99一区二区三区| 国产精品成人免费| 蜜臀久久久久久久| 国产精品2024| 欧美嫩在线观看| 精品国产免费人成在线观看| 国产精品白丝在线| 韩国女主播一区二区三区| 成人av在线电影| 日韩精品一区二区三区蜜臀| 欧美一区午夜视频在线观看| 国产一区在线精品| 日本大香伊一区二区三区| 国产网站一区二区三区| 日日摸夜夜添夜夜添国产精品| 国产精品一区二区免费不卡| 91成人免费电影| 国产精品污网站| 粉嫩av亚洲一区二区图片| 欧美日韩一区精品| 国产精品二三区| 国产成人夜色高潮福利影视| 日韩写真欧美这视频| 日韩精品一级中文字幕精品视频免费观看| 国产ts人妖一区二区| 久久精品一区二区| 国产麻豆精品在线| 欧美日韩国产一区二区三区地区| 亚洲私人影院在线观看| 成人午夜电影网站| 亚洲图片激情小说| 91污在线观看| 夜色激情一区二区| 欧美日韩五月天| 精品在线一区二区| 精品乱人伦一区二区三区| 国产在线国偷精品免费看| 精品国产三级电影在线观看| 国产麻豆91精品| 亚洲啪啪综合av一区二区三区| 91欧美激情一区二区三区成人| 一区二区在线观看av| 91精品在线一区二区| 国产在线精品一区二区| 国产精品久久久久久久久动漫| 91麻豆国产香蕉久久精品| 亚洲综合色网站| 久久嫩草精品久久久精品一| 99热精品一区二区| 美女mm1313爽爽久久久蜜臀| 国产精品久久久久久久久果冻传媒| 日本高清不卡一区| 国产一区二区三区久久久| 亚洲综合激情小说| 国产精品久久久久久久久图文区| 91精品国产品国语在线不卡| av不卡免费在线观看| 国产一区二区三区日韩| 亚洲国产精品一区二区久久恐怖片| 精品88久久久久88久久久| 欧美三级日韩三级| 色婷婷香蕉在线一区二区| 国产a视频精品免费观看| 免费的成人av| 奇米四色…亚洲| 天天综合网 天天综合色| 亚洲欧美另类在线| 亚洲一区二区五区| 亚洲综合自拍偷拍| 亚洲第一会所有码转帖| 午夜日韩在线电影| 男男gaygay亚洲| 久久se精品一区二区| 日本伊人色综合网|