arduino——串口通讯(笔记)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arduino——串口通讯(笔记)相关的知识,希望对你有一定的参考价值。
参考技术A Arduino与外部设备通信的方式均属于串行通讯。串行通讯的概念是相对于并行通信而言的。
(当然目前来说只是概念上的认知。)
arduino硬件集成了串口、IIC、SPI三种常见的的通信方式,掌握了这三种通讯类库的方法,即可与具有响应通信接口的各种设备通信,也可以为基于这些通信方式的传感器或者模块编写驱动程序。
HardwareSerial类库的使用
hard硬
ware器物或者什么
Serial这里是串口或者串行的意思
我们理解arduino和USB接口的简单通信构成了计算机和arduino之间的串口通信,除此之外arduino还可以与其他串口设备进行通信。
TX发送端
RX接收端
通过简单的图可以理解两个设备之间共用电源接地。
实际的arduino板子上的这两个端口为数字端口0和1
1为发送端
0为接收端
板子上有很明显的标志。
首先简单回顾一下数组在arduino的用法。
数据类型 数组名称【数组元素的个数】
例如 int a[5];定义了一个有5个整数型元素数组。
int a[5]=1,2,3,4,5
和
int a[5];
a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
是等效的。
取值方法:
a[0]
当使用print()发送数据时,发送的不是数据本身,而是将数据转换成字符,再转换成对应的ASCII码发送出去,串口见失去接收到ASCII码,则会显示对应的字符。
而当使用write()时,发送的是数据本身,但当串口见失去接收到数据后,会将数值当成ASCII而显示对应的字符。
因此123对应的字符为。
delphi学习笔记2之动态库调用和串口通讯
串口通讯:
Spcomm 控件属性:
CommName :表示COM1,COM2等串口的名字;
BaudRate:设定波特率9600,4800等
StartComm
StopComm
函数WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean
用于发送一个字符串到写线程,发送成功返回true,发送失败返回false, 执行此函数将立即得到返回值,发送操作随后行。
函数有两个参数,其中 pdatatowrite是要发送的字符串,dwsizeofdatatowrite 是发送的长度。
事件OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object
当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,bufferlength是收到的数据长度
动态库调用
unit CMUPS_HB600DLL; interface type IcumpsHB600 = record end; function ZT_UPS_OpenDevice(pstrCom :pansichar; var m_nUPSHandle:pinteger;nFage:Integer=0):Integer;stdcall; //打开设备 function ZT_UPS_CloseDevice(nHandle:pInteger):Integer;stdcall;//关闭设备 function ZT_UPS_GetStatus (nHandle:pInteger):Integer;stdcall; // 取得设备状态 implementation function ZT_UPS_OpenDevice; external ‘ZT_UPS.dll‘; function ZT_UPS_CloseDevice; external ‘ZT_UPS.dll‘; function ZT_UPS_GetStatus; external ‘ZT_UPS.dll‘; end.
上面是个例子。需要注意:
一、调用参数用stdcall
二、用external语句指定被调用的DLL文件的路径和名称
三、注意参数的传递。
pansichar类型对应的是c语言的char*
pinteger类型对应的是c语言的int*
integer类型对应的是c语言的int
var m_nUPSHandle:pinteger 对应的是c语言的int* ,这里是引用传递
以上是关于arduino——串口通讯(笔记)的主要内容,如果未能解决你的问题,请参考以下文章