树莓派与电脑之间的串口通信编程

数据通信的三个方式介绍

单工通信

只支持数据在一个方向上传输,又称为单向通信。如无线电广播和电视广播都是单工通信。

半双工通信

允许数据在两个方向上传输,但在同一时刻,只允许数据在一个方向上传输,它实际上是一种可切换方向的单工通信。即通信双方都可以发送信息,但不能双方同时发送,(当然也不能同时接受)。这种方式一般用于计算机网络的非主干线路中。

全双工通信

允许数据同时在两个方向上传输,又称为双向同时通信,即通信的双方可以同时发送和接收数据。如现代电话通信提供了全双工传送。这种通信方式主要用于计算机与计算机之间的通信。

串口通信

串口通信是全双工的,串口通信最重要的参数是波特率,数据位,停止位,奇偶校验位。两个人能正常沟通,得使用相同的语言,语速适当。而串口通信也是类似,波特率衡量通信的速度(统一语速),数据位,停止位,奇偶校验位组成了数据格式(统一语言)。

编程步骤

一、树莓派串口默认是被蓝牙占用了,配置释放之后才能使用它进行串口通信。
1.修改根目录下的cmdline.txt文件,输入以下指令:

sudo vi /boot/cmdline.txt

将下图框选的部分删除
在这里插入图片描述
2.重启树莓派,输入以下指令:

sudo reboot

二、串口虽然是一个设备,但是在linux中会将串口看成一个设备文件。
代码如下:

#include <wiringSerial.h>
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
int main ()
{ 
    int serialFd;
    int nread;
    char cmd[128]={'\0'};
    
 	/*初始化文件设备*/
    if(wiringPiSetup() == -1)
    {
         printf("we failed to setup wiringPi!\n");
         exit(-1);	 
    }
 
    /*打开串口设备文件*/
    serialFd = serialOpen("/dev/ttyAMA0",9600);
 
   while(1)
   {	/*向串口发送数据给PC端串口助手*/
   		while( serialDataAvail(serialFd) != -1 ){//获取串口中的可用数据,返回-1代表错误
   			cmd = serialGets(serialFd);//从串口中获取字符串数据返回
   			if( cmd == '1'){
				serialPuts("received 1\r\n");//向串口发送数据
			}
			if( cmd == '2'){
				serialPuts("received 2\r\n");	
			}    
 		}

/* 	while(1){		
		//发字符
		serialPutc(serialFd,'a');
		//发字符串
		serialPutc(serialFd,"aaa");
		delayMicroseconds(1000000);
*/	}

   }
	return 0;
}

树莓派外设开发接口文档参考
https://www.cnblogs.com/lulipro/p/5992172.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值