在树莓派上运行 .net core 2.1 程序 并实现开机启动
本篇文章完整的说明如和在树莓派上运行 .net core2.1程序,当然也参考了其他的博客,此处结合我自己的经验,再写一篇完整的博客,方便大家,还有我自己进行查阅。
https://blog.csdn.net/weixin_39449466/article/details/80686835
https://blog.csdn.net/sD7O95O/article/details/79395766
https://blog.csdn.net/github_35160620/article/details/52134098
http://shumeipai.nxez.com/2013/10/06/windows-remote-desktop-connection-raspberry-pi.html
https://blog.csdn.net/guanmaoning/article/details/78760428
ok,接下来进入正题,先弄个树莓派,如果都没有,那还玩什么东西。。。。。

准备一个tf卡,准备读卡器,现在要往tf写入操作系统。
官方的地址:https://www.raspberrypi.org/downloads/raspbian/
推荐下载下面的:

下载好之后,准备格式化tf卡
需要下载一个软件(我看教程都是下载软件,系统默认格式化我也不知道行不行,可能格式有区别)
格式化工具:SD card formatter

将下载好的系统镜像写入tf卡
写入工具:win32diskimager

开启ssh连接
在tf卡当前的目录下创建一个文件,命名为 ssh 不带任何的后缀
设置无线网连接
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 network={
ssid="AMRHU"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
}
这样开机后就能连接上网络。
显示设置
在boot目录下,找到config.txt文件,里面许多选项被注释掉了,我们需要在选择以下命令:
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details # uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1 # uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=1#可以去掉开机屏幕周围的黑色边框 # uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16 # uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1# # uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2#DMT模式
hdmi_mode=58 #分辨率为适应屏幕分辨率的选择 # uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
hdmi_drive=2 # uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
config_hdmi_boost=4 # uncomment for composite PAL
#sdtv_mode=2 #uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800 # Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on # Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi # Additional overlays and parameters are documented /boot/overlays/README # Enable audio (loads snd_bcm2835)
dtparam=audio=on
目前已经可以接显示器,然后进入系统了。然后修改系统的密码
sudo passwd pi

分别输入两次新的密码就可以设置成功了

远程连接
总共运行4条指令
sudo apt-get install xrdp
sudo apt-get purge tightvnc xrdp
sudo apt-get install tightvncserver xrdp
sudo /etc/init.d/xrdp restart
检查端口状态
通过命令:netstat -tnl
查看 3350 3389 5910 这三个端口处于LISTEN,一般就没问题了。
此时,将树莓派重启,然后使用windows自带的远程连接去请求数据

还需要在树莓派配置好ip地址

输入用户名和密码即可登录
文件传送
上述的远程桌面确实好用,但是不能传送文件,这个就比较尴尬了,所以使用下面的文件实现
https://filezilla-project.org/download.php 下载一个软件 FileZilla


输入ip地址,用户名,密码。及端口,端口一般为22
就可以把文件复制到指定的目录里面。
安装 .net core 环境
sudo apt-get update
sudo apt install curl libunwind8 gettext
curl -sSL -o dotnet.tar.gz https://download.microsoft.com/download/1/f/7/1f7755c5-934d-4638-b89f-1f4ffa5afe89/dotnet-runtime-2.1.2-linux-arm.tar.gz
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
正常的话,显示如下:

在windows上生成你自己的应用程序,通过cmd来编译你的应用程序
dotnet publish -r linux-arm

然后把生成的文件拷贝到树莓派里面,具体的拷贝方式,可以把tf卡拔出来拷贝,也可以用上面的远程传输的东西拷贝

准备启动
cd ./Documents/HslCommunicationCoreDemo
chmod 777 ./HslCommunicationCoreDemo
./HslCommunicationCoreDemo
然后就正常的跑程序了

开机启动
首先要编写脚本,文件名为 testboot.sh
运行 nano testboot.sh
输入
chmod 777 /home/pi/Documents/HslCommunicationCoreDemo/HslCommunicationCoreDemo /home/pi/Documents/HslCommunicationCoreDemo/HslCommunicationCoreDemo
测试一下
./testboot.sh
向rc.local文件添加启动代码
修改rc.local文件,在终端输入并回车:
sudo nano /etc/rc.local
在打开的文本中找到exit 0,在此之前添加的代码在启动时都会被执行,在exit 0 之前添加一行代码
exec /home/pi/testboot.sh
如果存在权限的问题,那么使用下面的方法
su pi -c "exec /home/pi/testboot.sh"
ctrl+o保存,ctrl+x退出,然后在终端输入:sudo reboot ,重启系统测试。
如果运行失败,可以输入如下的指令查看状态
sudo systemctl status rc-local
正常情况如下

这里的文件替换了另一个,无需理会,这就代表基本成功了。
中间有个坑,主程序不能使用readLine来保证程序处于一直运行的状态,否则程序已启动,就立马结束了。需要使用循环来实现。

还有关于中文输入法的问题,下次再补充了
在树莓派上运行 .net core 2.1 程序 并实现开机启动的更多相关文章
- 树莓派上运行.net core 2.0程序
记录中 参考: https://www.cnblogs.com/songxingzhu/p/7399991.html https://www.cnblogs.com/goodfulcom/p/7624 ...
- [翻译]第三天- 在 Mac 上运行 .NET Core 应用程序
原文: http://michaelcrump.net/part3-aspnetcore/ *** 简介 该系列文章的完整列表如下: 第一天 - 在 Windows 下安装和运行 .NET Core ...
- 解惑:在Ubuntu18.04.2的idea上运行Scala支持的spark程序遇到的问题
解惑:在Ubuntu18.04.2的idea上运行Scala支持的spark程序遇到的问题 一.前言 最近在做一点小的实验,用到了Scala,spark这些东西,于是在Linux平台上来完成,结果一个 ...
- 树莓派3B+上运行.Net Core项目
最近买了个树莓派3B+,准备把自己写的一个.Net Core爬虫挂在上面跑 买之前没有想到树莓派因为是今年新出的,导致驱动以及系统啥的都不是很完善,导致走了很多弯路,早知道买树莓派3就不用那么多折腾了 ...
- 如何在树莓派上运行雷神之锤III
昨天在树莓派上尝试运行了一下雷神之锤III,流畅运行,效果不错~~~ RPI这个小身板的东东总是可以给你带来惊喜,这里记录一下步骤以备后续再用 先确保RPI的程序和固件都已经更新 sudo apt-g ...
- linux环境上运行.net core 初探
1.安装 .net core 环境 rpm --import https://packages.microsoft.com/keys/microsoft.ascsh -c 'echo -e " ...
- 【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序
官网下载地址:https://etherlab.org/download/ethercat/ (可list查看文件列表)https://etherlab.org/download/ethercat/ ...
- 在Win2008上运行ASP.NET 1.1程序
在之前的文章<将Web站点由IIS6迁移至IIS7>中已经提到了关于在Win2008下运行ASP.NET 1.1程序的问题,但还不够完整,因此在这里重新整理一下. 1.要安装.net fr ...
- 在没装VS2010的机器上运行VS2010开发的C++程序
在VS2010下写了一个win32控制台应用程序,编译ok.exe,需要依赖osg相关动态库 第一次编译的是Debug版本的,直接将ok.exe和osg相关dll文件拷贝到没有安装VS2010机器上运 ...
随机推荐
- C++基础-string截取、替换、查找子串函数
1. 截取子串 s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回 s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字 ...
- STL_算法_03_拷贝和替换算法
◆ 常用的拷贝和替换算法: 1.1.复制(容器A(全部/部分) 复制到 容器B(全部/部分)),返回的值==>iteratorOutBegin.end() iterator copy(itera ...
- Bata冲刺 第一天
一.冲刺第一天完成任务情况及贡献小时数: 姓名 今日已完成任务 时间(h) 马仲山 代码调整 2 马婧(12) 整理需求文档 2 马婧(13) 整理设计文档 2 马世芳 编写测试文档 2 张俊逸 ...
- Java 访问权限修饰符以及protected修饰符的理解
2017-11-04 22:28:39 访问权限修饰符的权限 访问修饰符protected的权限理解 在Core Java中有这样一段话“在Object类中,clone方法被声明为protected, ...
- LeetCode--225--用队列实现栈
问题描述: 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队 ...
- LeetCode--118--杨辉三件I
问题描述: 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: [ [1], [1,1], [1,2 ...
- (Gorails)vuejs系列视频: Webpacker/vue-resource(不再为官方推荐)。
频:https://gorails.com/episodes/using-vuejs-for-nested-forms-part-1?autoplay=1 在嵌套表格上使用vue.js. 在appli ...
- ViewPagerIndicator+viewpager的简单使用,不需要导入Library包
ViewPagerIndicator作为一款分页指标小部件兼容ViewPager,封装上做得非常不错,目前已为众多知名应用所使用. ViewPagerIndicator+viewpager实现如下效果 ...
- TCP和UDP最完整的区别
TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少: 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性 ...
- EBS 快速创建供应商的标准创建逻辑
该页面经过了客户化,只保留了这三个字段. 点击应用时执行 oracle.apps.pos.supplier.webui.SuppCrtCO String s29 = (String)((OAAppli ...