Criando uma porta serial virtual

11

Estou tentando criar um par de portas seriais virtuais no meu mac. Isso é bastante fácil de fazer com muitos programas shareware em um PC. Imaginei que haveria algum comando shell super-poderoso para fazer isso em uma linha, mas não consigo encontrá-lo.

Quero enviar dados NMEA para uma porta e o Google Earth lê os dados pela outra.

Alguma dica?

EDITAR

O /dev/ptypxcomentário de MrDaniel parecia ser interessante - posso retirá-lo da perfeição /dev/ttypxno terminal.
Mas o Google Earth parece estar lendo cu. deviceName em vez dos dispositivos / ttypx ..

especificamente (Old Pro):

Ao tentar importar o local atual usando um GPS (ou fluxo NMEA canalizado através de nossa porta serial virtual), vamos a: Ferramentas> GPS> Tempo real para acessar a tela de importação.
Depois de selecionar a opção NMEA e ativar o rastreamento em tempo real, ele procura dispositivos conectados e parece:

  • USB:
  • /dev/cu.Bluetooth-PDA-Sync
  • /dev/cu.Bluetooth-Modem
  • /dev/cu.iPhone-WirelessAP

Mesmo com a porta serial ttypx funcionando corretamente, ela não a procura.
Gostaria de inserir os dados desse dispositivo no Google Earth.

DefenestrationDay
fonte
11
+1, como eu também gostaria de fazer isso no desenvolvimento de dispositivos. Também pode ser ServerFault, SuperUser ou StackOverflow.
Max Ried
Você já pensou em usar o Google Latitude ? Se isso não for aceitável, forneça mais detalhes sobre o que o Google Earth está fazendo.
Old Pro
Você conseguiu controlar o Google Earth através de uma posição falsa fornecida por uma porta NMEA? Eu estaria interessado em como isso funciona.
Max N
11
@MaxN - Não. Eu
desisto
Isso está próximo (AppleScript): laclefyoshi.blogspot.com/2011/01/…
Max N

Respostas:

9

O Google possui uma ferramenta extremamente útil para desenvolvedores do Arduino e simula muito bem as portas seriais no OS X para fins de teste. Só funciona até 10.6

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

(disponível anteriormente em http://code.google.com/p/macosxvirtualserialport/ )

Isso pode ajudá-lo?

Raúl Pedroche
fonte
2
Desculpe-me por cancelar a exclusão e editá-la - prefiro que você tenha o crédito por trazer à luz o incrível software de porta serial virtual do google. É claro que você pode excluí-lo novamente e eu o deixarei em paz se essa for sua preferência.
bmike
2
Esse site code.google.com para macosxvirtualserialport agora retorna um erro 404.
hotpaw2
11
O projeto do Google parece já estar disponível no Github: github.com/clokey/PublicCode/tree/master/… só funciona até 10.7
Max N
3

Acho que o que você está procurando é um Pseudo Terminal, conforme observado no Text-Terminal-HOWTO , parece que o Mac OS X foi incorporado /deve parece que isso pode fazer o que você deseja, por exemplo, dois programas conversando juntos por meio de um " porta serial virtual ".

Os pseudo terminais são pares de dispositivos como / dev / ptyp3 e / dev / ttyp3. Não há dispositivo físico diretamente associado a nenhum deles, nem mesmo um conector de porta serial. Mas se um programa trata ttyp3 como se fosse uma porta serial, o que é lido e gravado nessa porta aparece no outro membro do par ptyp3, que outro programa usa para ler e gravar. Assim, dois programas se comunicam por esse método e um programa no ttyp3 pensa que está falando com uma porta serial. É algo como um "cano" entre esses dois tty's.

Além disso, o programa de tela também é útil para você.

MrDaniel
fonte
1

Existem vários ângulos para sua pergunta aqui:

  • Deseja apenas converter faixas NMEA etc. em algo que o Google Earth possa ler (e exibir)? GPSBabel é a ferramenta de escolha para esse tipo de coisa.
  • Deseja conectar seu GPS e ler seu conteúdo através de uma porta serial? Os Macs não têm portas seriais; você precisará de algo como o Keyspan USA-19HS para conectar dispositivos seriais via USB.
  • Deseja criar dispositivos seriais virtuais por curiosidade? Isso é definitivamente possível, mas além do meu conhecimento ...
nohillside
fonte
11
Opção 3. Eu tenho os dados NMEA (em tempo real) e quero exibi-los em tempo real. O Google Earth lê de uma porta serial, então só preciso descobrir como configurar as portas e conectá-las a uma delas.
Página Inicial>
De onde vêm os dados NMEA? GPSBabel é capaz de agir como um conversor em tempo real, ver gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside
É transmitido a partir de um iPhone. Não preciso de conversão para nada (particularmente kml), só preciso de uma porta serial virtual para inserir os dados nmea e sugá-los do outro lado pelo Google Earth.
Página Inicial>
Toda vez que uso o meu Keyspan , apenas sorrio de orelha a orelha. Especialmente no meu novo 11 polegadas Air - tanto novos e antigos trabalhar juntos ;-)
bmike
0

Não está claro que você pode falsificar a detecção de porta serial integrada, mas eu começaria com um pipe nomeado (mkfifo) /dev/cu.fake.ttypxe alguns dados prontos para serem lidos quando você ativar o tempo real.

Minha cópia do Google Earth parece pesquisar cada fonte potencial em ordem e continua a fazer nada além de digitalizar, pois não tenho dados NMEA sendo fornecidos.

Obviamente, você precisará de um pequeno script [shell | perl | python] para ler /dev/ttypxe gravar no seu arquivo fifo "falso".

bmike
fonte
-1

Eu usei um pseudoterminal Posix para criar uma porta de comunicação virtual em um programa OSX C. Você pode procurar a função da biblioteca posix_openpt ().

Tom Dowad
fonte