1. <delect id="hbm07"><option id="hbm07"></option></delect><s id="hbm07"><option id="hbm07"><bdo id="hbm07"></bdo></option></s>
    <s id="hbm07"></s>

      1. <p id="hbm07"><option id="hbm07"><bdo id="hbm07"></bdo></option></p>

        英創Linux主板的Python, C#實例簡介之一

         2020-9-29     作者:Emtronix    

          本文主要介紹在英創工控主板(ESM8000、ESM7000和ESM6800H)上,采用Python和C#編程,實現文件訪問、串口通訊、GPIO和網絡通訊的方法。用Python或C#編寫的程序,均可通過相應的class庫,直接操作這些接口。


          本文的4個demo實例,均采用Visual Studio Code作為基本的編程工具,其代碼可在主板 + ESMARC評估底板上運行,其基本的硬件環境采用采用ESM8000工控主板 + 評估底板構成,如下圖所示:


        esm8000套件側面2.png


          實例1 – Step1_File:介紹文件讀取的基本方法(link to Step1_File)。

          實例2 – Step2_Serial:介紹異步串口UART的應用方法,以ttyS2的收發為例(link to Step2_Serial)。豐富的串口資源是英創工控主板特色之一。

          實例3 – Step3_Gpio:介紹通用數字IO(GPIO)的使用方法(link to Step3_Gpio)。英創工控主板均包含32位GPIO。

          實例4 – Step4_Net:介紹網口的使用方法(link to Step4_Net)。這里網口既可以是常用的RJ45形式以太網口,也可以是SPF接口形式的光纖網口、WiFi無線局域網,以及4G/GPRS廣域網接口,英創Linux主板對這些網絡都有完善的支持。


        Step1_File


          userinfo.txt是英創Linux主板(ESM8000、ESM7000和ESM6800H)的基本配置文件,存放在/mnt/mmc/目錄下。讀取文件userinfo.txt信息,打印到console;提取eth0網口的IP參數,打印到console。


          測試硬件平臺:ESM8000 + ESMARC評估底板,僅使用調試串口。


          Python實現


          首先創建一個新目錄,如D:\Python>mkdir Step1_File,然后啟動VS Code,打開該目錄同時點擊“New File”添加文件step1_file.py,并在該文件編寫相應的實現代碼,如下:


        英創Linux主板的Python, C#實例簡介之一.png


          代碼編寫好后,即可直接在ESM8000板卡上直接運行。


          開發中為了方便測試,一般采用文件系統掛載的方式進行,詳細的配置和使用的方法請參考ESM8000使用必讀中相關介紹(link to 使用必讀)。


          在ESM8000 console終端中運行如下命令:

          root@ESM8000#>mount -t nfs -o nfsvers=3 192.168.201.12:/home/zhl/esm8000/python /mnt/nfs

          root@ESM8000#>cd /mnt/nfs/step1_file

          root@ESM8000#>python3 step1_file.py


          即可在終端看到該程序的執行結果。


          C#實現


          首先創建一個新目錄,如D:\CSharp>mkdir Step1_File,然后啟動VS Code,打開該目錄如下:


        英創Linux主板的Python, C#實例簡介之一.png


          在VS Code的Terminal窗口中執行dotnet new console,創建C# Project,可看到基本程序框架如下:


        英創Linux主板的Python, C#實例簡介之一.png


          編寫代碼實現Step1_File要求的功能:


        英創Linux主板的Python, C#實例簡介之一.png


          執行dotnet publish –r linux-arm64 –self-contained false,編譯程序并發布可以在ARM64 CPU架構的Linux系統中運行的代碼。


          發布的可執行代碼包含在..\Step1_File\bin\Debug\net5.0\linux-arm64\publish\目錄下。ESM8000目標機只需掛載開發主機的這個目錄,就可以運行這個程序了。


          開發主機若為Linux系統,掛載命令為:

          root@ESM8000#>mount -t nfs -o nfsvers=3 192.168.201.137:/home/x10/esm8000/csharp  /mnt/nfs


          開發主機若為Windows系統,掛載命令為:

          root@ESM8000#>mount -t nfs -o nfsvers=3 192.168.201.14:/d/csharp  /mnt/nfs


          在ESM8000 console運行Step1_File程序:

          root@ESM8000#>cd /mnt/nfs

          root@ESM8000:/mnt/nfs #>./Step1_File/bin/Debug/linux-arm64/publish/Step1_File


          可在console窗口看到Step1_File運行輸出的結果。


          Step1_File實現的功能很簡單,本例主要是展示C#程序開發的基本流程,特別是它跨平臺的特性。


        Step2_Serial


          串口(ttyS2,115200-8-N-1)接收后回發,并把接收到的字節數等統計信息顯示到console。


          Python實現


          在該例程中需要用pyserial的庫文件,ESM8000主板文件系統中已經配置pyserial package,原則上客戶在開發主機上編寫好如下代碼,即可直接在ESM8000上運行。


        英創Linux主板的Python, C#實例簡介之一.png


          為了在VS Code編輯環境中對導入的python庫有在線幫助及聯想功能,需在開發主機上也安裝python以及pyserial package等。無論是Linux開發主機還是Windows開發主機,都可以通過pip 命令進行安裝。這里重點介紹一下Windows主機上VS Code安裝方法。


          首先在Windows主機上安裝python,直接下載安裝即可,這里不再贅述。安裝完成后,啟動VS code界面中就可看到安裝python的版本信息。此時打開Terminal 窗口,運行如下命令:>pip install pyserial


          C#實現


          .NET 5的C#程序的一個特點之一,是系統僅包含.NET Core部分,而具體的應用程序再包含所需的特殊功能包,這樣做可使.NET環境保持相對穩定。Step2_Serial對一部串口UART的操作,需要C#的System.IO.Ports類庫,可在VS Code的Terminal窗口(D:\CSharp\Step2_Serial>)完成相關類庫的添加:

          >dotnet add package System.IO.Ports --version 5.0.0-rc.1.20451.14


          注意有些類庫的版本,需要與.NET的版本保持一致。具體的實現代碼如下所示:


        英創Linux主板的Python, C#實例簡介之一.png


          編譯及發布方法與Step1一樣,這里不再贅述。


        Step3_Gpio


          Step3_Gpio把ESM8000主板的GPIO8作為輸入,GPIO9作為輸出。檢測到GPIO8的下降沿,就改變GPIO9的輸出電平。


          Python實現


          ESM8000共32路GPIO,Step3_gpio.py例程實現的功能是設置相鄰的兩路GPIO,其中分別為輸出和輸入,測試時將它們短接,通過讀取輸入GPIO的狀態,觀察電平的變化。


          例程可帶參數,該參數為GPIO的序號,缺省為0。代碼中定義的EM_GPIOs列表實現ESM8000的32位GPIO管腳至iMX8MM系統GPIO的轉換。


        英創Linux主板的Python, C#實例簡介之一.png


          C#實現


          在創建Step3_Gpio工程后,需要添加C#的System.Device.Gpio類庫,才能實現對GPIO的操作。在Linux平臺,System.Device.Gpio類庫依賴于libgpiod庫。添加類庫的操作也是在VS Code的Terminal窗口(D:\CSharp\Step3_Gpio>)完成:

          dotnet add package System.Device.Gpio --version 1.1.0-prerelease.20276.1


          代碼中用class Esm8000Gpio類來實現ESM8000的32位GPIO管腳至iMX8MM系統GPIO的轉換。


        英創Linux主板的Python, C#實例簡介之一.png


          接著就可以定義相關的對象了,每位GPIO都有自己的Controller,在構造函數中需要與Linux平臺的libgpiod驅動聯系在一起。


        英創Linux主板的Python, C#實例簡介之一.png


          對Linux平臺,System.Device.Gpio實現了對輸入事件回調函數響應功能,正好應用到本實例中。主循環檢查事件計數器,并根據結果來驅動GPIO9電平翻轉。


        英創Linux主板的Python, C#實例簡介之一.png


          實際應用程序可根據實際需求,在回調函數中實現更多復雜的功能。


        Step4_Net


          TCP(Port No = 6000)接收后回發,并把接收到的字節數等統計信息顯示到console。


          Python實現


          step4_net.py 直接調用socket函數啟動tcp 服務器模式,代碼如下:


        英創Linux主板的Python, C#實例簡介之一.png


          C#實現


          C#的網絡通訊功能需要System.Net.Sockets類庫,.NET Core已包含該庫,也認可從NuGet下載最新版本的庫。具體的實現代碼如下:


        英創Linux主板的Python, C#實例簡介之一.png


          值得一提的是,應用程序是在Socket層面操作網絡接口,與具體的網絡接口形式無關,即網絡接口可以是最基本的RJ45形式的以太網口,也可以是WiFi接口、4G/GPRS無線接口等等。在傳統的WinCE平臺上,由于微軟對WiFi等新的網絡接口支持不夠,限制了CE平臺在這方面的應用,而在Linux平臺上,對各種網絡接口都有很好的支持,為使用C#的客戶遷移到Linux平臺提供了重要的支撐。     

        酥酥影院18禁止-日本三级吹潮在线观看-国产成人亚洲日韩欧美-无码中文天天av天天爽-欧美人与动牲交A-一本之道高清在线不卡视频-久久99热只有频精品 2021年国产精品青青草原-三级香港三级韩国三级-又色又爽又黄的视频还免费-亚洲老熟女-特级婬片女子高清视频-国产午夜福利1000集-无码AV无码天堂资源网 在线播放国产不卡免费视频-国第一产在线精品亚洲区-人妻少妇久久中文字幕-成 人影片 毛片免费观看-亚洲国产在线精品一区在线观看-亚洲精品国产第一区二区 2021超清国产小视频-亚洲城人在线视频-国产乡下三级-人妻少妇精品无码专区无码-国产在线视频一区二区三区-2021中文一卡二卡三卡-国产在线精品亚洲一区 2021超清国产小视频-亚洲城人在线视频-国产乡下三级-人妻少妇精品无码专区无码-国产在线视频一区二区三区-2021中文一卡二卡三卡-国产在线精品亚洲一区 国产 日产 欧美最新-人妻少妇精品专区性色av-欧美性色av性色在线观看-日本三级韩国-国产真实迷奷学生在线-国产一级特黄高清大片自怕-黑粗硬大欧美在线视频 国产国产人免费人成免费视频-日本三级香港三级人妇电影99-人妻熟女精品视频专区-色综合久久无码中文字幕-人妻丰满熟妇AV无码区影片资源-欧美av色爱综合网欧美av 亚洲va不卡在线-日本A级视频在线播放-亚洲国产精品无码中文字幕-久久无码高潮喷水-欧美老熟妇喷水-丰满巨臀大屁股BBw-JAPANESE55丰满熟妇-亚洲欧美日韩高清一区 久久爱在线播放视频-免费播放观看在线视频-卡通动漫图片-中文字幕熟女人妻一区二区-AV无码AV在线A∨天堂-欧美国产日产一区二区-人妻无码-人人澡人人播色屋av
        2021最新国产在线不卡A-国产精品专区第5页-亚洲图揄拍自拍另类图片-无码专区国产精品-欧美特黄三级免费视频-特级毛片A片全部免费-国产在线视精品在亚洲 免费A级毛片无码A∨-子夜精品视频在线-国产免费精品美女视频-免费人妻少妇精品-日韩人妻无码潮喷中文视频在线-欧美老妇牲交视频-无码少妇一级AV片在线观看 国产好大好硬好爽免费视频-香港三级片电影-免费韩伦影院在线观看-日本熟妇人妻高清无码视频-国产一级伦奷毛片未删减版-国产学生a片-AV爆乳无码专区-浓毛少妇a片 2021超清国产小视频-亚洲城人在线视频-国产乡下三级-人妻少妇精品无码专区无码-国产在线视频一区二区三区-2021中文一卡二卡三卡-国产在线精品亚洲一区 国产精品永久免费-单亲乱L仑视频在线观看-无码 人妻 在线视频-被公侵犯玩弄漂亮人妻-女人高潮抽搐潮.I喷视频-国产成年无码AV片在线观看-亚洲日本无码一区二区 久久爱视频-青青青国产费观看-成年片黄网站色大全男女-国产高清在线看AV片-av无码播放一级毛片免费-97人人超碰国产精品最新-亚洲乱码中文字幕综合-中国丰满熟妇av 120秒试看无码体验区-99国产免费-日本制服美女-中文字幕乱码免费-日韩成视频在线精品-久久婷综合五月-永久免费AV无码网站打屁股-国模无码视频一区 一个人看免费视频WWW-日本三级成本人网站-日本老熟妇无码色视频网站-AV天堂中AV世界中文在线播放-波多野结衣一区二区三区AV高清-成年美女黄网站色奶头大全 亚洲精品熟女国产-五月婷之久久综合丝袜美腿-女神高潮喷水正在播放-少妇人妻系列无码专区视频-亚洲人成网站18禁止-国产一级A片免费无码-av无码在线