完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前一阵子一直在做关于短程无线通信的实验,在前一篇报告中提到将ZigBee模块和NanoPi M2想连,在ARM硬件平台上对于采集数据的处理固然重要,但是我们首要做的却是将两者想连,如何将两者想连。在原来的ZigBee模块上是加入了一个RS232转USB转换芯片,然后同PC想连接,在WINCE下安装专门的驱动,从而实现数据的发送和连接,但是这件事情在NanoPi M2上做还是有些困难的,所以为了实现的方便一些,采集的数据将不经历RS232转USB这一步,而是直接通过RS232发送给NanoPi M2,这样便避开了USB通信(避难求易这种做法是不值得提倡的,但是得一步一步来,先易后难),这样也许会减少一些工作量,至少会让我们看到成功的希望。 本篇中将没有任何图片,如果成功会在下一篇中给出实物的图片,我也期望自己可以成功! 下面是串口的基本介绍,虽然多余,但还是写一下吧。 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于 4% 的情况下,传输电缆长度应为 50 英尺。 在Linux下串口通信需要的头文件为: #include #include 串口一 为 /dev/ttyS0 串口二 为 /dev/ttyS1 下面是一个简单的串口读取的例子 更加详细的说明和解释请参见http://www.ibm.com/developerworks/cn/linux/l-serials/和[size=14.9248px]《Serial Programming Guide for POSIX Operating Systems》 代码说明:使用串口二测试的,发送的数据是字符,但是没有发送字符串结束符号,所以接收到后,后面加上了结束符号。我测试使用的是单片机发送数据到第二个串口,测试通过。**********************************************************************/#define FALSE -1#define TRUE 0/*********************************************************************/int OpenDev(char *Dev){ int fd = open( Dev, O_RDWR ); //| O_NOCTTY | O_NDELAY if (-1 == fd) { perror("Can't Open Serial Port"); return -1; } else return fd;}int main(int argc, char **argv){ int fd; int nread; char buff[512]; char *dev = "/dev/ttyS1"; //串口二 fd = OpenDev(dev); set_speed(fd,19200); if (set_Parity(fd,8,1,'N') == FALSE) { printf("Set Parity Errorn"); exit (0); }while (1) //循环读取数据{ while((nread = read(fd, buff, 512))>0) { printf("nLen %dn",nread); buff[nread+1] = ' |