我的账户
人脉网

自媒体资讯干货

亲爱的游客,欢迎!

已有账号,请

立即登录

如尚未注册?

加入我们
  • 客服电话
    点击联系客服

    在线时间:8:00-16:00

    客服电话

    400-000-0000

    电子邮件

    xjubao@163.com
  • APP下载

    人脉网APP

    随时随地掌握行业动态

  • 官方微信

    扫描二维码

    关注人脉网公众号

人脉网 网站首页 资讯列表 资讯内容

.Net Core跨平台应用开发串口有哪些

2022-03-28 发布于 人脉网

  这篇文章主要讲解了“.NetCore跨平台应用开发串口有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.NetCore跨平台应用开发串口有哪些”吧!

  引言

  为了验证采用dotnet core技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行,针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证研究。

  硬件环境

  硬件系统经过对比筛选,选用了友善之臂出品的NanoPC-T3 Plus。该控制板为掌上型嵌入式Linux系统迷你PC,采用64位三星arm CPU,具有完善的硬件接口和驱动支持,大于1G的内存和8G以上的eMMC闪存,具有较高的性能价格比。

  NanoPC-T3 Plus是友善之臂专门针对企业用户而设计,它采用三星八核Cortex -A53架构的S5P6818处理器,动态运行主频400M-1.4GHz。NanoPC-T3 Plus配备了16GB的eMMC、音频接口、视频输入/输出接口等;并且集成了WiFi和蓝牙,增加千兆以太网和电源管理功能,板载陶瓷天线,带串口调试功能。为适应工业客户需要,NanoPC-T3 Plus加装了标配的散热片,以解决芯片发热问题。

  NanoPC-T3 Plus带两路视频输入,支持DVP 摄像头及MIPI-CSI摄像头,并且带四路视频输出,分别为HDMI 1.4A接口、LVDS接口、并行RGB-LCD接口、MIPI-DSI接口。并且支持RTC,板载备份电池接口,引出四个USB接口(其中三个是标准A型接口, 另外一个是2.54mm排母)等。

  NanoPC-T3 Plus)流畅运行Android5.1、Debian、UbuntuCore+Qt等系统,内核驱动源码完全开源,接口丰富。

  硬件资源特性

  CPU: S5P6818, 运行主频1.4GHz

  电源管理: 采用一颗ARM® Cortex®-M0单片机做电源管理, 支持动态调压, 软件关机和定时开机等功能

  内存: 2GB 32bit DDR3 RAM

  存储: 1 x microSD 卡槽

  网络: Gbit Ethernet(RTL8211E)

  Wireless:802.11 b/g/n

  Bluetooth: 4.0 dual mode

  天线: Wi-Fi和蓝牙共用, 板载陶瓷天线, 同时提供IPX接口

  eMMC: 16GB

  视频输入:DVP Camera/MIPI-CSI(双摄像头口)

  视频输出:HDMI/LVDS/并行RGB-LCD/MIPI-DSI(四个视频输出接口)

  音频:3.5mm耳机座/Via HDMI

  麦克风: 板载麦克风

  USB Host: 4 x USB 2.0 Host , 其中三个是标准A型接口, 另外一个是2.54mm排母

  Micro USB: 1 x USB 2.0 Client

  LCD接口: 45pin, 0.5mm间距FPC贴片座,支持全彩TFT LCD (RGB:8-8-8)

  HDMI: HDMI 1.4a, Type A型口,1080P高清显示

  DVP Camera接口: 24pin, 0.5mm间距,FPC贴片竖座

  GPIO扩展接口: 30 Pin2.54mm排母, 包含4个UART, 1路I2C, 1路SPI, 3路PWM,9个GPIO

  I2S/USB: 2.54mm间距排母

  调试串口: 2.54mm间距排针

  按键: 电源按键, 复位按键, 启动选择按键各一个

  LED: 1 x power LED and 1 x system LED

  CPU温度检测: CPU内部集成温度传感器

  RTC: 支持RTC, 板上有备份电池接口

  散热片螺丝孔:能加螺丝固定的散热片

  供电: DC 5V/3A

  PCB Size:100 x 64mm,八层,沉金工艺

  温度工作范围: -40℃ to 80℃

  为避免广告嫌宜,不过多对设备进行说明(好象难以避免呵,如有此方面问题,请管理员协助进行和谐呵)

  在此给出设备的wiki地址:http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T3_Plus/zh

  支持的系统平台

  厂家提供的系统映像文件支持以下版本系统

  lubuntu-desktop-xenial-4.4-armhf(基于ubuntu16.04的LUbuntu桌面版,32位arm系统)

  friendlycore-xenial-4.4-armhf(基于ubuntu16.04的FriendlyCore系统,32位arm系统)

  friendlycore-xenial-4.4-arm64(基于ubuntu16.04的FriendlyCore系统,64位arm系统)

  Android5.1系统

  FriendlyCore,是一个没有X-windows环境,基于Ubuntu core构建的系统,使用Qt-Embedded作为图形界面的轻量级系统,兼容Ubuntu系统软件源,非常适合于企业用户用作产品的基础OS。

  系统除了保留Ubuntu Core的特性以外,还包括以下特性:

  支持电容和电阻触摸屏

  支持WiFi连接

  支持以太网连接

  支持蓝牙,已预装bluez等相关软件包

  支持音频播放

  支持Qt 5.10.0 EGLES和OpenGL ES1.1/2.0

  系统平台

  .NET Core支持的Linux版本

  https://docs.microsoft.com/zh-cn/dotnet/core/linux-prerequisites?tabs=netcore2x

  .NET Core 2.x 将 Linux 视为一个操作系统。 支持的 Linux 分发都对应有一个 Linux 内部版本(根据芯片体系结构)。

  以下 Linux 发行版本/版本支持 NET Core 2.x:

  Red Hat Enterprise Linux 7,6 – 64 位(x86_64 或 amd64)

  CentOS 7 – 64 位(x86_64 或 amd64)

  Oracle Linux 7 – 64 位(x86_64 或 amd64)

  Fedora 28、27 – 64 位(x86_64 或 amd64)

  Debian 9(64 位,arm32)、8.7 或更高版本 – 64 位(x86_64 或 amd64)

  Ubuntu 18.04(64 位,arm32)、16.04、14.04 – 64 位(x86_64 或 amd64)

  Linux Mint 18、17 – 64 位(x86_64 或 amd64)

  openSUSE 42.3 或更高版本 – 64 位(x86_64 或 amd64)

  SUSE Enterprise Linux (SLES) 12 Service Pack 2 或更高版本 – 64 位(x86_64 或 amd64)

  Alpine Linux 3.7 或更高版本 – 64 位(x86_64 或 amd64)

  系统平台选择

  根据.NET Core 2.x对Linux系统的支持,选择friendlycore-xenial-4.4-arm64作为系统运行平台。

  下载厂家提供的系统映像文件,对NanoPC-T3/Plus进行系统烧写,方法详见WIKI教程.

  烧写主要步骤:

  1、下载厂家提供的映像文件和烧写工具win32diskimager(wiki中提供了下载链接)

  2、准备一张tf卡,格式化为一个分区(FAT32)

  3、运行win32diskimager软件,选择映像文件,选择tf卡对应的分区,点击写入

  4、烧写完成

  5、将tf卡插入卡座,按信boot键给控制板上电(需外接显示器和键盘、鼠标)

  6、根据屏幕提示,将系统安装至eMMC闪存。

  连接嵌入式Linux系统

  FriendlyCore系统默认支持多种连接方式,可通过外接输入、输出设备(键盘/鼠标、显示器)进行连接,也可以通过串口终端进行连接,也支持通过网络,使用ssh终端方式进行连接。

  FriendlyCore系统默认配置了两个用户帐户

  普通用户:

  用户名: pi

  密码: pi

  Root用户:

  用户名: root

  密码: fa

  系统开机默认会以 pi 用户自动登录,你可以使用 sudo npi-config 命令取消自动登录。

  物理连接

  NanoPC具有HDMI、TFT显示接口和USB接口,可以直接连接显示器、键盘/鼠标进行操作。

  串口连接

  NanoPC默认支持调试串口做为终端。

  通过USB转TTL串口的串口模块进行连接。默认通讯参数:115200,N,8,1

  软件可使用任意串口终端工具,如SecureCRT或Windows系统自带超级终端。

  网络连接

  可以通SSH工具进行网络连接,通过网络终端的方式访问。(Win10系统自带)

  FriendlyCore系统网络配置默认为自动获取IP地址。通过网络连接设备,需要确定设备的IP地址。

  初始IP地址可以通在串口终端模式下输入ifconfig命令查看,或通过网络扫描确定。

  确定设备的IP地址后,可以通ssh命令进行终端连接

  本次实验中,我们设备的IP地址为172.16.93.74,通过如下命令进行网络终端接入:

  ssh pi@172.16.93.74

  根据提示输入密码后,即可成功登入。

  .NET Core跨平台验证

  由于后期主要需要使用的程序功能为网络通讯和串口通讯,我们主要针对目标嵌入式linux系统下的网络和串口通讯进行验证。

  本次实验中,我们先对串口通讯进行验证。

  编写一个netcore2.x的控制台程序,程序实现系统信息显示,串口资源列举,串口选择,串口打开/关闭,串口接收显示和串口定时发送测试数据功能。

  验证程序设计

  采用SerialPort类进行串口测试功能实现(netcore项目需通过Nuget安装SerailPort库)

  实现以下功能:

  显示系统平台信息

  串口资源列举,

  串口选择,

  串口打开

  串口关闭

  串口接收/数据显示

  串口定时发送测试数据

  程序较为简单,在此贴出部分功能代码:

  显示系统平台信息

  串口资源列举

  串口测试

  编译程序,在window下测试程序通过。

  跨平台发布

  因目标平台为arm64嵌入式linux系统,采用以下方式进行程序发布:

  在命令行窗口,切换到项目文件夹,运行如下命令:

  dotnetpublish-rlinux-arm64-cRelease

  通过以上命令,得到生成的目标平台的发布包,程序文件及相关.netcore运行时依赖均被发布到项目release\netcoreapp2.2\linux-arm64\publish文件夹中。

  远程部署

  采用scp命令,将发布文件复制到目标机器

  在windows(win10)系统中,打开控制台窗口,输入scp命令,命令格式如下:

  scp –r d:\ubuntu\publish\ pi@172.16.93.74:/home/pi/.

  根据提示输入用户密码,完成文件夹的复制。

  在ssh终端窗口,切换到程序文件夹

  cd /home/pi/publish

  设置程序执行权限:

  chmod 777 ./HelloArm # HelloArm为测试程序文件名

  输入./ HelloArm运行程序

  Linux环境运行.Net Core程序

  在普通用户pi中运行程序

  程序显示了系统环境信息

  由于程序启动后调用了SerialPort.GetPortNames方法,程序未能按预期执行,出现如下信息:

  提示信息表明SerialPort类库仅支持Windows系统平台,不支持跨平台。

  至此,.net core程序跨平台在linux系统运行成功,但串口类库不支持跨平台。

  第三方串口类库

  为解决串口类支持问题,查找资料,发现github上有一个开源SerialPortStream类库支持netcore,能够支持Linux系统。

  https://github.com/jcurl/SerialPortStream

  该类库支持windows系统和Linux系统,但在Linux系统下运行,需要额外编译目标平台支持库并进行相关环境配置。

  Linux串口类库编译

  You first need to compile the support library libnserial.so for your platform. To do that, you’ll need a compiler (e.g. GCC 4.8 or later) and cmake.

  在目标系统中(FriendlyCore),安装GCC编译器和cmake

  首先确定网络正常连接,能够访问互联网(需要良好的网络环境)。

  执行如下命令:

  sudo apt-get update

  安装更新GCC

  sudo apt-get install gcc

  安装cmake

  sudo apt-get install cmake

  确保gcc和cmake安装正常。可采用命令查看安装情况

  gcc –version

  cmake –version

  After cloning the repository, execute the following:

  $ git clone https://github.com/jcurl/serialportstream.git

  $ cd serialportstream/dll/serialunix

  $ ./build.sh

  根据上面的命令,完成类库的源码克隆和编译。

  注:类库linux依赖库仅需在同一目标平台编译一次,其他相同目标平台,复制并配置依赖库到目标系统即可。

  环境变量配置

  Binaries are built and put in the bin folder from where you ran the build script. You can add a reference to LD_LIBRARY_PATH to the library:

  $ export LD_LIBRARY_PATH=`pwd`/bin/usr/local/lib:$LD_LIBRARY_PATH

  执行上述命令,配置类库目标到环境变量(上述命令为临时环境变量配置,仅当前shell有效)

  配置全局环境变量的方法:

  vi /etc/profile

  在文件的最后一行,增加环境变量LD_LIBRARY_PATH的配置

  保存退出后,执行source /etc/profile 刷新环境变量

  注:vi相关操作,请自行百度或必应。

  Linux串口测试

  将测试验证程序中的SerialPort类更换为SerialPortStream类库(方法、属性基本兼容),进行适当的调整,在windows系统上编译运行,通过。

  重新发布Linux系统运行版本,进行linux系统部署。

  采用普通用户pi登录

  如环境变量未有效配置,串口类无法正常执行,程序执行到串口方法调用处停止。

  按Ctrl+C终止程序。

  配置好串口类库所需环境变量,重新运行程序,程序正常运行。

  如下图,程序启动,列举出系统有效串口,如下图所示:

  由于pi用户帐户权限原因,程序只显示了/dev/ttySAC0一个串口,此串口为系统调试终端输出串口。

  切换到系统超级用户

  su root

  根据提示输入密码:fa

  切换到程序目录,执行测试程序 ./publish/HelloArm,出现如下界面:

  在超级用户下,程序列举出了5个串口。

  通过操作命令,打开指定的串口,开启接收事件及定时周期发送数据,连接电脑串口(目前大部分电脑已不再提供串口,本实验通过USB转串口模块进行连接),通过PC端的串口工具软件同Linux迷你PC主机进行通讯,收发通讯正常。

  配置程序开机运行

  在root用户下,配置/etc/rc.local文件,将程序添加到系统开机运行

  vi /etc/rc.local

  在exit 0之前增加一行

  /home/pi/publish/HelloArm

  保存退出,重启系统

  reboot

  重启系统后,调试串口终端界面中,可以看到程序运行的输出信息,至此,程序配置完成,开机自动运行成功。

  感谢各位的阅读,以上就是“.NetCore跨平台应用开发串口有哪些”的内容了,经过本文的学习后,相信大家对.NetCore跨平台应用开发串口有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是卓云,小编将为大家推送更多相关知识点的文章,欢迎关注!

  卓云智联致力于做TOP的IDC运营商和网络安全提供商,主营业务有CDN、等保、敏捷项目管理、视频美颜、高防IP、DDOS防御、防泄密系统、cc防御等服务。

1

鲜花
1

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

相关阅读

  • 人脉网
    1970-01-01
  • 人脉网
    1970-01-01
  • 人脉网
    1970-01-01
  • 人脉网
    1970-01-01
  • 人脉网
    1970-01-01
  • 人脉网
    1970-01-01
人脉网

扫一扫二维码关注我们Get最新资讯

相关分类
热点推荐
关注我们
人脉网与您同行

客服电话:400-000-0000

客服邮箱:xjubao@163.com

周一至周五 9:00-18:00

人脉网 版权所有

Powered by 人脉网 X1.0@ 2015-2020