苹果电脑怎么设置串口

电脑教程013

苹果电脑怎么设置串口,第1张

苹果电脑底层也是linux,所以可以在terminal里

使用linux的串口命令对串口参数进行设置。

stty是linux下改变和打印终端设置的常用命令。

当然,我们可以利用它设置我们的串口打印操作信息。

举例:stty -F /dev/ttyS0 speed 115200 cs8 -parenb -cstopb -echo

解释:通过stty设置/dev/ttyS0串口, 波特率为115200 ,数据位cs8,奇偶校验位-parenb,停止位-cstopb,同时-echo禁止终端回显。

具体stty用法,可以在terminal里使用man stty命令看到。

minicom是一个 串口通信 工具,就像Windows下的 超级终端 。可用来与串口设备通信,如调试交换机和Modem等。它的 Debian 软件包的名称就叫minicom。

brew 安装

在安装过程中报错

以根用户身份运行自制程序非常危险,不再受支持。 由于Homebrew不会放弃安装权限,因此您将授予所有生成脚本对系统的完全访问权限。

解决方案:

不要使用 sudo brew install 安装

安装完minicom后,使用minicom s来配置minicom

1:串口编程的基础知识。

首先每一个连接的串口设备在mac/linux上都是以文件形势存在的。文件的路径是 /Dev(根目录下的dev文件夹)。每个设备文件都有一个读缓冲区和写缓冲区,我们可以在读缓冲区里读取设备反馈给我们的信息,在写缓冲区里给设备下一些命令。但是读/写缓冲区的大小是一定的,如果设备在读缓冲区里写入数据的速率快,而我们在缓冲区里读取的速度慢,这就会导致我们有一些内容被覆盖,致使我们漏掉一些数据。所以我们还要设置好设备读写缓冲区的速率,这个速率就是我们常见的波特率。

2:关于/Dev目录下的cu和tty文件

同一个串口设备或者USB串口设备在mac的/Dev目录下都会有两种文件,这两个文件其实没有太大差别,只是用的地方不太一样。tty可以看作是Linux/Unix遗留下来的,cu可以看作是mac独有的。一般的读写操作用cu就可以了。而在一些特殊的场合就得用tty文件了。比如用在传入资料,等待CDC讯号,或者Device没有按照RS232标准制定所有的协定。

3:连接并操作串口设备

连接并操作一个串口设备一共需要五个步骤。

a:首先识别所有的设备

b:获取到串行设备文件的路径

c:打开操作的端口

d:操作设备(通过读缓冲区来获取设备反馈给我们的信息,通过写缓冲区来给设备下命令)

e:关闭端口。

查找设备

mach_port_t masterPort

io_iterator_t *matchingServices;

classexToMatch = IOServiceMatching(kIOSerialBSDServiceValue)

详情蚕茧我的另一片博客 Mac下查找匹配设备

获取串行设备的路径

io_object_c modemService

kern_return_t kernResult = KERN_FAILURE

BOOL ModemFound = false

While((!modemFound) &&(modemService = IOIteratorNext(matchingServices))) // matchingServices是上文获取到的设备的迭代器,逐个获取下一个设备

{

CFTypeRefdeviceFilePathAsCFString

deviceFilePathAsCFString = IORegistryEntryCreateCFProperty(modemService, CFSTR(kIOCalloutDeviceKey), kCFAllocatorDefault, 0)// 创建一个modemService 的CF描述。 // 应该是获取设备文件的路径

if(deviceFilePathAsCFString)

{

Booleanresult

result = CFStringGetCString(deviceFilePathAsCFString, deviceFilePath, maxpathSize, kCFStringEncodingASCII)

CFRelease(deviceFilePathAsCFString) // 把路径用kCFStringEncodingASCII方式编码后存储在devicePath中

if(result) // result 为yes 表示成功

{

printf("BSD path :%s",deviceFilePath)

modemFound = true

kernResult = KERN_SUCCESS

}

}

printf("\n")

IOObjectRelease(modemService)

}