精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣用虛擬串行端口使PIC和PC相互通信

454398 ? 來源:工程師吳畏 ? 2019-08-01 16:54 ? 次閱讀

在本教程中,我們將介紹如何使用虛擬串口讓PIC和PC相互通信

串口示意圖

先決條件

由于涵蓋了很多主題本教程中,您熟悉一般電子微控制器非常重要。以下是您在嘗試此項目之前應該熟悉的主題的簡短列表:

微控制器 - PIC18

PIC UART模塊

Visual Studio

FTDI:串行通信仍然有效

過去的計算機具有并行和串行端口,允許它們與外部硬件通信。與使用起來非常復雜的較新USB端口不同,串行和并行端口是業(yè)余愛好者最好的朋友。

然而,技術已經轉移并讓我們陷入黑暗,沒有更多用戶友好的端口可以玩FTDI(Future Technology Devices International)是一家成立于1992年的半導體設備公司。自那時起,它們在電子產品界(尤其是業(yè)余愛好者)中聲名鵲起。因為他們生產的IC可以通過串口橋接USB端口。換句話說,他們的IC將處理USB端,并為用戶提供IC上的物理串行端口連接,以及計算機上的虛擬串行端口。

在本教程中,我們將使用VB.net生成一個可以使用虛擬串口與PIC通信的表單程序。

這個項目選擇了VB.net,因為根據作者的觀點和經驗,VB.net是處理串口時更加用戶友好。與C ++和C#不同,VB.net更寬容,使代碼更容易理解。可以在幾行簡短的代碼中在VB.net中設置串口。相比之下,在C ++或C#中,只需要更多的行來初始化端口。這并不意味著VB.net整體語言更好;它只是一種非常適合業(yè)余愛好的PIC-to-PC通信語言。

PIC串行通信

該項目的第一步是配置PIC單片機,以便我們可以使用UART模塊。該初始化代碼可在setup.h中找到,它將UART模塊配置為在異步模式下運行,使用8位,并以10417波特的速度運行。它還配置PIC以在通過UART接收字節(jié)時觸發(fā)中斷;這樣我們就可以立即處理輸入數據以防止數據丟失。

這里的PIC代碼也有一些OLED例程,因此我們可以顯示當前存儲在temp_text數組中的文本。每當觸發(fā)接收中斷時,UART字節(jié)都存儲在temp_text中,并且strPos會遞增。

主循環(huán)將不斷清除OLED屏幕,打印temp_text數組中的數據,然后運行一個小延遲(這可以提高OLED性能)。主循環(huán)還掃描B0輸入引腳,如果引腳打開,則PIC會將temp_text中的數據發(fā)送到UART,通過串口發(fā)送。

VB.net表單應用程序

要使Windows識別FTDI,相應的驅動程序需要安裝(這些驅動程序可以在FTDI網站上找到)。

VB.net表單程序分兩個階段創(chuàng)建。第一階段是設計表單本身,第二階段是對表單進行編碼。

無論您對Microsoft的看法是什么,在制作GUI應用程序時,VS Express都必須是其中之一。最神奇的IDE曾經構思過。您可以直接在表單中拖動所需的對象,定位它們,并更改其外觀和屬性,而不是逐行編碼按鈕和元素。但是,您應該已經知道這一點,因為這是一個預先請求!因此,使用新表單,添加您在下面的圖像中看到的所有功能,或者只需打開附加的VB.net項目并復制您想要的內容。雖然布局和對象名稱不是很重要,但是必須拖入一個串口對象,該對象可以在工具箱中找到。

下一步是將程序編碼為向表單中的對象添加功能并使串行端口正常工作。第一個重要功能是獲取可用的當前串行端口列表。單擊刷新按鈕時,將清除包含所有串行端口名稱的組合框。然后循環(huán)遍歷所有可用的串行端口,將每個串行端口名稱添加到組合框。

找到串口后,打開時間將在PIC和PC之間建立連接的虛擬端口。單擊打開端口按鈕時,將串行端口配置為使用波特率10417(必須與PIC波特率相同),不使用奇偶校驗位,并使用一個停止位。然后,通過首先將端口名稱設置為組合框中的選定項目并打開open()函數來打開串行端口。請注意,此函數會執(zhí)行try/catch中的所有操作,因為IO可能會出現許多錯誤。

那么,既然我們已經打開了一個端口,我們需要開始向PIC發(fā)送數據。這就是VB.net串口的美妙之處。我們可以使用的第一個函數是WriteLine,它基本上寫一個字符串行并用一個新行終止它(通常是回車換行符)。但PIC通常不希望接收字符串,而可能更喜歡字節(jié)數據。再次,這在VB.net中是微不足道的,只需使用Write()函數完成,其中第一個參數是要發(fā)送的字節(jié)數組,第二個參數是從數組開始的位置,最后一個參數是數字要發(fā)送的字節(jié)數。

表單應用程序中的最后一個重要功能是通過串口接收數據。同樣,與許多VB.net函數一樣,這是微不足道的,可以使用以下兩個函數之一來完成:ReadLine()和Read()。 ReadLine在接收以新行終止的字符串時很有用,但它可能導致程序掛起,因為它會等待直到收到整行。第二個讀取函數是Read(),其工作方式與Write相同,其中第一個參數是用于存儲數據的數組,第二個參數是從數據開始存儲數據的位置,最后一個參數是從緩沖區(qū)讀取的字節(jié)數。

可以使用大多數電路構造技術制作PIC電路,但最好使用臨時電路。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • PC
    PC
    +關注

    關注

    9

    文章

    2065

    瀏覽量

    154019
  • PIC
    PIC
    +關注

    關注

    8

    文章

    507

    瀏覽量

    87476
  • 串行端口
    +關注

    關注

    0

    文章

    31

    瀏覽量

    11650
收藏 人收藏

    評論

    相關推薦

    如何實現51單片機與PC機的串行通信

    51單片機與PC機的串行通信是一種常見的通信方式,它允許單片機通過串行接口與PC機進行數據交換。
    的頭像 發(fā)表于 10-21 11:35 ?395次閱讀

    怎樣用THS3201實現輸出功率可調?

    怎樣用THS3201實現輸出功率可調?
    發(fā)表于 08-26 08:28

    如何讓兩個ESP8266可以連續(xù)地相互通信

    客戶端,它也起作用,但現在我想設置兩個ESP8266以便它連續(xù)相互通信,為此我花了很多天的時間,但沒有找到任何可以幫助我這樣做的示例代碼,如果有任何示例代碼準備好,請發(fā)送我。謝謝。。
    發(fā)表于 07-12 10:12

    TUSB2036通用串行總線的2或3端口集線器數據表

    電子發(fā)燒友網站提供《TUSB2036通用串行總線的2或3端口集線器數據表.pdf》資料免費下載
    發(fā)表于 07-09 10:43 ?0次下載
    TUSB2036通<b class='flag-5'>用串行</b>總線的2或3<b class='flag-5'>端口</b>集線器數據表

    ESP32 WIFI SOFTAP模式可以有多個STA連接到它并讓STA相互通信嗎?

    我不清楚SOFT AP是否可以像一個普通的 AP 那樣,可以有多個 STA 連接到它并讓 STA 相互通信?
    發(fā)表于 06-20 06:27

    兩塊esp32-c3如何實現藍牙相互通信

    各位大佬,求問兩塊esp32-c3如何實現藍牙相互通信?應該參考vscode的esp-idf中哪個例程呢?
    發(fā)表于 06-11 06:18

    使用USBUART組件與主機PC通信,如果在串行端口打開的情況下終止固件,主機端為什么會報錯?

    我正在使用 USBUART 組件與主機 PC 通信,我一直在尋找某種機制來關閉 MCU 端的串行端口,或者至少通知主機我將關閉端口。 我遇到
    發(fā)表于 06-03 08:41

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?
    發(fā)表于 05-07 06:55

    stm32f100怎樣用重映射功能?

    的是stm32f100c8t6b芯片,現在想用將PB1映射為TIM1_CH3N,在調用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)時, GPIO_PinAFConfig和GPIO_AF_TIM1都沒定義,stm32f100
    發(fā)表于 05-07 06:06

    什么是串行端口?有哪幾種分類?

    端口有幾種不同的分類,包括以下幾種: 1. RS-232:RS-232是一個標準的串行通信接口,最早用于連接計算機和調制解調器、打印機等外部設備。它使用9針的D型插座,每個針腳有不同的功能,如數據傳輸、數據接收、控制信號等。RS
    的頭像 發(fā)表于 02-02 15:40 ?1948次閱讀

    求助,是否可以使用PIC監(jiān)控串行端口

    是否可以使用 PIC 監(jiān)控串行端口
    發(fā)表于 01-22 06:28

    通過雙線RS485串行端口PC進行通信,波特率設置460800 bps不起作用的原因?

    在我的一個項目中,我通過雙線 485 串行端口PC 進行通信,波特率為 115200 bps,但 TESTBOARD_150PC_OUT
    發(fā)表于 01-18 10:18

    無線通信怎樣用電磁波表示1和0

    為什么頻率越高,能攜帶的信息就越多?以數字信號為例,信息就是一串串的1和0,所以先搞清楚怎樣用電磁波表示1和0。
    發(fā)表于 12-05 14:44 ?1748次閱讀
    無線<b class='flag-5'>通信</b>:<b class='flag-5'>怎樣用</b>電磁波表示1和0

    怎樣用ADAU1761設計DRC的壓縮/擴展?

    請問怎樣用ADAU1761設計DRC的壓縮/擴展。我在SigmaStudio 4.5的模塊中只找到RMS。如果ADAU1761設計DRC要怎樣
    發(fā)表于 11-28 06:41

    proteus和keil實現串口通信仿真

    前面一課講述了串行通信的技術原理,本課通過安裝虛擬串口,proteus和keil實現串口通信仿真。
    的頭像 發(fā)表于 11-27 16:42 ?5699次閱讀
    <b class='flag-5'>用</b>proteus和keil實現串口<b class='flag-5'>通信</b>仿真