第一次尝试用PC机去控制FriendlyArm友善之臂开发板, 以下的成果是本学期嵌入式系统课程的一个课程设计, 希望能帮助大家了解FriendlyArm友善之臂开发板的使用.
注: 下图中我通过PC端的Linux虚拟机, 以ssh命令远程控制ARM开发板, 远程控制ARM开发板的方法在博文最后会有说明.
一开始对于以跨语言方式完成socket通信有些头疼, 但后来发现不同语言对于socket通信的实现仅仅是实现形式不同, 基本的原理和流程是基本相同的.
这个课程设计要求我们通过PC机向ARM开发板发送命令, ARM开发板在接收到不同的命令后, 用其两个发绿色光的LED灯分别以00/01/10/11(0-> 灭, 1 -> 亮)方式做出回应. 补充说明一下, 我将命令分为四大种类: 电压、电导率、电流mA、调零mV(只有电导率档才可调电导挡位). 这里实现的是PC发命令至ARM开发板, 故下图所制作的可视化操作界面仅是命令选择的载体, 在此并无其它含义, 大家不必深入思考.
两设备的通信采用TCP协议, PC端作为client, ARM开发板端作为server: 另外PC端可自由开启或关闭程序(窗体).
ARM开发板端的server.c实现了多客户连接进程并发处理这一功能, 这也是很重要的一点.
下面说一下该课程设计的启动方式.
1. 开启PC端的热点.
2. 在ARM开发板端连接PC端的热点, 这里ARM开发板的IP地址为 192.168.137.243.
3. 在开发板端终端输入 gcc -o server server.c, 之后输入命令 sudo ./server.
4. 在PC端启动窗体程序, 选择某一命令, 点击发送即可.
5. 此时ARM开发板的两个LED灯会随着PC端选择命令的不同而展现出不同的亮灭组合.
//Led_control.h
void led_control(int L1, int L2)
{
//system("echo 43 > /sys/class/gpio/export");
//system("echo 44 > /sys/class/gpio/export");
//以上两条语句在第一次运行server时取消注释, 之后变为注释
if(L1 == 0 && L2 == 0)//D1 D2 灭
{
system("echo low > /sys/class/gpio/gpio43/direction");
system("echo low > /sys/class/gpio/gpio44/direction");
}
else if(L1 == 0 && L2 == 1)//D1灭 D2亮
{