<track id="zxlr8"></track>
<u id="zxlr8"><sub id="zxlr8"></sub></u>
  • <track id="zxlr8"></track>
    1. <ins id="zxlr8"><table id="zxlr8"></table></ins><wbr id="zxlr8"><ins id="zxlr8"></ins></wbr>
      <wbr id="zxlr8"><table id="zxlr8"></table></wbr><u id="zxlr8"><bdo id="zxlr8"></bdo></u>
    2. <video id="zxlr8"></video>
      <rp id="zxlr8"><input id="zxlr8"></input></rp>
    3. <u id="zxlr8"></u>

      英創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平臺提供了重要的支撐。     

      A毛看片免费观看视频视频在线播放,国产a片欧美一级毛 片在线观看,2019午夜75福利不卡片在线,久久精品国产99国产精,最近更新中文字幕免费,久久人人97超碰,中文字幕无码A片久久东京热 亚洲伊人成综合人影院,亚洲国产中文字幕在线视频,天天五月缴情在线观看,97国产在线看片免费人成视频,天干夜天天夜天干天,免费A级毛片高清视频,窝窝午夜色视频国产精品 92福利视频合集100午夜,人人天天夜夜曰曰狠狠狠,免费观看网站 亚洲自国产拍偷拍,国产免费888在线观看,久久天天躁狠狠躁夜夜躁2020,无羞耻肉动漫在线观看 欧美成人电影,日本不卡免费一区二区,老司机精品视频在线观看,快播影院在线观看,无遮挡又色又黄的免费视频,美女一黄色网站,成年无码AV片在线观看,亚洲AVAV天堂Av在线不卡 色就色欧美综合在线影院,亚洲欧美卡通另类丝袜美腿,老司机福利在线观看,夜夜爽8888免费视频,国内自拍99re久久,2018Av天堂在线视频精品观看,少妇无码精品12p 午夜天堂欧美成人在线视频,超碰91自拍国产自拍,激情综合色综合啪啪五月,男人的天堂在线视频,午夜理理伦A级毛片天天看,无码熟妇人妻AV在线偷拍,大量偷拍情侣自拍视频 精品国产自在现线拍在线,无码专区人妻系列日韩,色婷婷色综合缴情网站,猛男操的我高潮连连,国产片av国语在线观看手机版,久久人人97超碰精品,亚洲最大AV网站在线观看
      久久亚洲精品无码爱剪辑,亚洲欧美国产vr在线观,国产真实乱子伦精品视频,日韩精品一区二区中文免费在线观看,在线A亚洲V天堂网2018,免费观看欧美大片毛片不用播放器 日本极品高清不卡AV,亚洲AⅤ天堂AV在线电影猫咪,五月色婷婷综合狠狠爱,碰超79网站,印度女人牲交视频免费播放,va在线看国产免费,狠狠躁夜夜躁人人爽天天古典 免费 在线 av 日本,免费A片在线观看,一本道久在道最新2021,人妻无码不卡中文字幕系列,午夜爽爽爽男女免费观看HD,日本高清视频永久网站www,东京热人妻无码人av 人人插人人莫人人干在线,AV天堂久久天堂AV色综合,欧美A色爱综合网欧美V,亚洲图欧美日韩在线,亚洲中文字幕曰本毛片,中文字幕97超碰大香寡妇蕉,久爱在线 亚洲AV片不卡无码久久,亚洲人成免费观看视频在线,欧洲亚洲偷自拍第一页,av在线播放日韩亚洲欧,一日本道不卡高清A无码,97碰碰碰人妻无码视频,加勒比最新无码AV免费资源 国内精品自线在拍,日韩一区二区三不卡高清,伊人中文字幕无码专区视频在线播放网站,看全黄大色黄大片美女蓝光在线看,无码av高清毛片在线看,人人超人人超碰超国产 小草视频手机在线视频,免费黃色大片,偷欧洲亚洲另类图片AV天堂,久久国产乱子伦,国产乱子伦精品视频,日本高清色本在线视频观看,加勒比一本HEYZO高清视频 AV无码东京热亚洲男人的天堂,315电影网A级毛片,深夜A级毛片视频免费,亚洲日本VA午夜在线电影,日本无码免费不卡AV二区,在线看午夜福利片国产,亚洲中文字幕aⅴ天堂 无码刺激性A片,成上人色爱A∨综合网,午夜性影院在线观看视频播放,手机国产乱子伦精品视频,无码99久热只有精品视频在线,狠狠噜天天噜日日黑人亚洲,在线观看无码不卡 真实国产乱子伦对白视频不卡,国产成人亚洲精品,老司机亚洲精品影院无码,亚洲成av人片在线观看天堂无码,美国一级a片,狠狠狠的在啪线香蕉亚洲,AV男人的天堂在线观看第三区