创建虚拟串口


11

我正在尝试在Mac上创建一对虚拟串行端口。使用PC上的许多共享软件程序,这相当容易做到。我认为会有一些超级强大的shell命令可以在一行中完成此操作,但是我找不到它。

我想将NMEA数据发送到一个端口,并让Google Earth从另一个端口读取数据。

有小费吗?

编辑

丹尼尔先生的/dev/ptypx评论似乎很有趣-我可以/dev/ttypx在终端中将其排除在外。
谷歌地球似乎正在读铜。deviceName而不是/ ttypx设备。

具体来说(旧版专业版):

当尝试使用GPS(或通过虚拟串行端口通过管道传输的NMEA流)导入当前位置时,我们进入:工具> GPS>实时进入导入屏幕。
选择NMEA选项并启用实时跟踪之后,它将查找连接的设备,并且看起来在:

  • USB:
  • /dev/cu.Bluetooth-PDA-Sync
  • / dev / cu。蓝牙调制解调器
  • /dev/cu.iPhone-WirelessAP

即使我们的ttypx串行端口运行正常,它也不会寻找它。
我想将数据从该设备导入Google Earth。


1
+1,因为我也想在设备开发中这么做。也可能是ServerFault,SuperUser或StackOverflow。
Max Ried 2012年

您是否考虑过改用谷歌纵横?如果不能接受,请提供更多有关Google Earth正在做什么的详细信息。
Old Pro

您是否已成功通过NMEA端口提供的虚假位置控制了Google地球?我会对这如何运作感兴趣。
Max N

1
@MaxN-不。我放弃了:(
DefenestrationDay '16

这是接近(的AppleScript):laclefyoshi.blogspot.com/2011/01/...
最大n

Answers:


9

Google为Arduino开发人员提供了非常有用的工具,它可以在OS X上很好地模拟串行端口以进行测试。它仅适用于10.6

https://github.com/clokey/PublicCode/tree/master/MacOSXVirtualSerialPort

(以前可从http://code.google.com/p/macosxvirtualserialport/获得

这可能对您有帮助吗?


2
原谅我取消删除它并对其进行编辑-我希望您因将google出色的虚拟串行端口软件亮起而获得荣誉。您当然可以再次将其删除,如果您愿意,我将不理会它。
bmike

2
该macosxvirtualserialport的code.google.com网站现在返回404错误。
hotpaw2

1
Google项目现在似乎可以在Github上使用了:github.com/clokey/PublicCode/tree/master/…尽管它只能工作到10.7
N

5

我认为您正在寻找的是Text-Terminal-HOWTO中所述的伪终端,它看起来像Mac OS X内置的,/dev似乎可以完成您想做的事,例如,两个程序通过“虚拟”串行端口。

伪终端是成对的设备,例如/ dev / ptyp3和/ dev / ttyp3。没有任何物理设备与它们中的任何一个直接关联,甚至没有串行端口连接器。但是,如果程序将ttyp3当作一个串行端口来对待,则对该端口进行的读取和写入操作将出现在ptyp3对的另一个成员上,另一个程序用来对其进行读写。因此,两个程序通过这种方法相互通信,而ttyp3上的一个程序认为它正在与串行端口通信。这就像是两个tty之间的“管道”。

此外,该屏幕程序对您也很有用。


1

这里有几个角度可以解决您的问题:

  • 您是否只想将NMEA轨道等转换为Google Earth可以读取(显示)的内容?GPSBabel是这类事情的首选工具。
  • 您要附加GPS并通过串行端口读取其内容吗?Mac没有串行端口,您将需要诸如Keyspan USA-19HS之的东西才能通过USB连接串行设备。
  • 您是否出于好奇而创建虚拟串行设备?这绝对是可能的,但超出我的了解...

1
选项3。我有NMEA数据(实时),并想实时显示。Google地球从串行端口读取数据,因此我只需要弄清楚如何设置端口并将其通过管道传输到其中一个即可。
DefenestrationDay

NMEA数据来自哪里?GPSBabel可以充当实时转换器,请参阅gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside

它来自iPhone。我不需要转换为任何东西(尤其是kml),我只需要一个虚拟串行端口即可将nmea数据放入其中,并通过Google Earth将其吸入另一端。
DefenestrationDay

每次我使用Keyspan时,我都会对着耳朵笑。特别是在我的新11英寸Air飞机上-如此多的新老
飞机

0

尚不清楚您是否可以伪造内置的串行端口检测,但是我将以命名管道(mkfifo)开始,/dev/cu.fake.ttypx并在启用实时功能后准备读取一些数据。

我的Google Earth副本似乎按顺序轮询了每个潜在的源,并且由于我没有提供NMEA数据,因此继续执行扫描操作。

当然,您将需要一个小的[shell | perl | python]脚本来读取/dev/ttypx和写入您的“伪造” fifo文件。



-1

我已经使用Posix伪终端在OSX C程序中创建了一个虚拟的通讯端口。您可能会搜索posix_openpt()库函数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.