我有一个 arduino,它每半秒在串行线路上吐出一行 GPS 数据,我知道这是有效的,因为我可以查看 arduino IDE 中的串行监视器,每半秒就会出现一条新的单行数据。
我现在正在使用 Swift 编写一个 Mac 程序,它将通过串行端口输入的每个坐标放在地图上,并使用 ORSSerialPort 库连接到 arduino 并接收其数据。这工作正常,我有一个早期工作的基本版本,但是我注意到 GPS 数据中存在间隙(它们在地图上以小组的形式出现,当它应该是一条恒定线时,它们之间有一个明显的空间) .
在我得到地图之前,我有一个文本字段,每条 GPS 数据线都会在它进入时添加到其中,它产生与 arduino IDE 串行监视器完全相同的输出,所以我认为一切正常。
为了尝试解决地图问题,我删除了地图代码,并print()
在 XCode IDE 中通过串行端口进入时将每一行简单地删除。令我惊讶的是,数据中有随机换行符,我不明白为什么。我觉得这可能会导致我遇到的问题(在每个逗号处拆分字符串,以便我可以提取各个值)所以想知道为什么它在 arduino IDE 和文本字段中以单行形式出现,但不是在 XCode IDE 中,大概是在我使用字符串的时候。
编辑:我在 XCode IDE 的打印和输出的文本字段前加上五个加号并用五个破折号作为后缀,然后在发送单个报告后将串行端口设置为关闭(应该是单行数据)。我对这两件事的输出最终都是三行,每行都以加号和破折号作为前缀和后缀。请参见下面的照片,它显示了应该是单行的内容:
为什么我的单行数据通过多行传递并且表现得像单个变量(如获取行的最后一个字符返回三行中第一行的最后一个字符,而不是分号)?