RS232 Comunicação - Posso usá-lo para criar um sinal de estado estacionário?
-
04-07-2019 - |
Pergunta
Em toda a honestidade, eu acho que a resposta é "não"; no entanto, gostaria de obter uma segunda opinião. Basicamente, eu preciso de um dispositivo micro-controlador para enviar um sinal constante para outro, mas a comunicação entre eles está usando RS232. Então eu acho que eu tenho que criar / atualizar as mensagens de comunicação para obtê-lo para fazer o que eu quero.
O que você acha?
Solução
Você deve ser capaz de definir algo como DTR (Data Terminal Ready), pin 20, ou DSR (Data Set Ready), 6 pinos, alta e mantê-lo lá como seu sinal de steady-state. Isto é como modems / terminais detectar que existe um dispositivo na outra extremidade que está pronto para se comunicar. Tudo depende de qual o nível de acesso que você tem para o hardware através de seu motorista.
[EDIT] Isso não envolve o envio de dados, embora você ainda pode fazer isso usando TX / RX, pinos 2 & 3.
RS-232 referência na wikipedia
Outras dicas
Você quer dizer uma voltagem fixa? Não uma onda quadrada? (A letra L) Que tal um comando de pausa (se você quiser chamá-lo um comando)?
Certamente você pode usar uma das linhas de controle se isso ajuda ... Ou especificamente à procura de algo fora do TX?
Se a pergunta é "eu posso alterar o estado DC da linha Tx", então a resposta é que muitos UARTs (incluindo os de PCs) pode ser solicitado a criar uma condição de 'break', que é o oposto de a condição ociosa normal da linha.
Então você pode virar 'break' on e off e alternar a linha assim.
Pode ser possível fazer algo assim, desde que você não se importa uma explosão semelhante a interface. Um micro poderia transmitir um byte e o outro poderia fazer alguma coisa para que bytes e enviá-lo como uma resposta.
Se você pode controlar ambas as extremidades da linha, você pode ser capaz de transformar o tx RS-232 e linhas de rx em linhas lógicas regulares para dar essa informação.
Na maioria das situações, no entanto, cada extremidade envia periodicamente um byte de informação de status que contém 8 valores possíveis digitais -. Dá muito mais informações sobre o status
Um temporizador no fim de recepção é sempre que redefinir uma mensagem é recebida, e se o temporizador expirar, em seguida, a mensagem tem tomado muito tempo e yo pode agir sobre faltando mensagem de status.
Como outros apontaram, se você estiver usando o controle de fluxo de hardware você tem algumas linhas de status disponíveis, bem como, embora em muitos casos essas linhas não são implementadas de modo que pode não ser uma opção.
-Adam
sinal constante poderia dizer:
- explosão constante de charaters: manter o send buffer cheio
- linha de alta detidos ou baixo: não envia nada ou enviar quebras contínuas
Eu acho que depende em grande medida, da UART que você está usando, por exemplo, , eo nível de acesso que tem ao abrigo software. Se você marcar a folha de dados muitas vezes há formas de controlar a maioria dos pinos diretamente para fins de teste, mas você terá de ir para lá de um nível muito baixo.
Em um nível superior, a resposta de tvanfosson é muito bonito o jeito que eu iria fazê-lo.
Enquanto a primeira resposta está correta, pode não ser possível usar esta técnica (usando DTR ou DSR) em muitas micro controladores como eles podem não ter esses sinais (muitas micro controladores pode apenas ter o RX básico / linhas TX e você que muitas vezes tem que usar outras portas I / o, se você queria / linhas de status de controle extra. no entanto, nem tudo está perdido, muitos controladores RS232 permitem que você defina a linha TX para 'marca' ou 'espaço' (ou seja, definir a linha TX para lógico alto ou baixo). Isso permitiria que você obtenha o seu sinal de estado estacionário. a linha de RX no receptor podem ser verificados para ver se o seu na marca ou espaço nível.