É muito confuso, mas você não precisa se preocupar com isso. Primeiramente, pense em uma UART que em si é um termo genérico, mas pense em uma que produza um protocolo com um bit inicial, um ou dois stop bits, 7 ou 8 geralmente bits de dados e, às vezes, paridade que é par ou ímpar; pode variar de lá, o que torna isso muito pior.
A UART está nos níveis TTL, o que isso significa. Ela costumava ser 5 V e agora 3,3 V, 1,8 V ou qualquer outra coisa; talvez o TTL seja o termo errado. ENTÃO você tinha / tem RS-232, RS-422, etc. Estes são os padrões VOLTAGE AND PIN, não os padrões de protocolo. É incorreto misturar os termos e dizer RS-232 quando você quer dizer algum tipo de UART.
De volta ao dia em que sua UART estava em suas placas-mãe e você desejava algum tipo de conector para o mundo externo com níveis de tensão que na época faziam sentido e algum tipo de pinagem / cabo padrão. Assim, um padrão popular de 25 e 9 pinos foi encontrado com freqüência em vários periféricos, e no mundo do Wintel PC isso era chamado de porta de comunicação ou, às vezes, de porta serial.
Claro, uma porta que transporta dados seriais pode e é chamada de porta serial, SPI, I²C, MDIO, UART, HDLC, SDLC, etc., e talvez até USB e SCSI; você poderia ficar louco com isso. Normalmente, uma porta serial significa alguns pinos que você pode obter em uma UART.
O mundo Unix / Linux diz tty
em vez de com
/ serial
/ uart
, mas é a mesma coisa.
Agora, há a IMPLEMENTAÇÃO. Você pode comprar algum chip UART com alguma interface (sim, você pode ter um SPI UART, que é serial em ambas as extremidades, ou I2C UART ou algum barramento dedicado ou USB, etc.). Mesmo no mesmo dia, a UART tinha um barramento de um lado que, em última análise, a CPU estava se comunicando. Hoje nós temos FTDI e outros fornecedores que fazem boas soluções UART USB, não faz com que seja diferente algumas camadas de interface entre o software e a UART e então o outro lado da UART tem alguma interface, seja em nível TTL / chip ou RS-232C ou RS-422, etc.
Primeiros Arduinos você freqüentemente usava uma placa FTDI USB-to-UART que também fornecia energia para o Arduino. Alguns têm esse poder USB e serial / UART na placa Arduino em si e, em seguida, que é ligado através da placa para o UART no chip AVR (mesmo negócio algum processador com algumas camadas de ônibus para permitir software para se comunicar com um UART que tem alguma interface do outro lado, neste caso os pinos na borda do AVR, nos níveis de tensão do chip, TTL).
Como a funcionalidade UART não mudou em décadas, por que a terminologia do software ou mesmo os aplicativos de software devem ser alterados no nível do aplicativo? Escreva um aplicativo Linux / Unix TTY 10-15 anos atrás contra um chip UART na sua placa-mãe, e há uma boa chance de que ele ainda funcione hoje com um nível USB para TTL ou USB para o nível RS-232C ou RS-422 ou qualquer pino / definição de nível. O mesmo vale para o Windows, e tenho código antigo que ainda funciona em ambos. No mundo do Windows, o termo COM é usado.
Eu não usei o sandbox do Arduino há algum tempo e, se assim fosse, estaria no Linux, mas não ficaria surpreso se o programa que é Java, se bem me lembro, for genérico e usar o nome do sistema, então ttyS2
no Linux e COM2 no Windows.
Para reler sua pergunta, isso pode ir muito além, aproveitando a quantidade de software já existente que usa essas chamadas de API. Novamente, por décadas, não há razão para que você não possa criar uma porta virtual em um software que carregue esses dados bidirecionais para praticamente qualquer coisa que você possa imaginar. UART para Ethernet é muito comum, e em salas de servidores onde os servidores ainda usam muito as portas COM / TTY / RS-232, você pode ter um servidor de terminal que possui um número de interfaces que você pode conectar a um número de servidores, em seguida, Ethernet no outro lado, então se você optar por não fazer telnet, você pode instalar um driver de porta COM virtual.
Em seguida, seu aplicativo em seu computador acha que está falando com uma porta COM, mas na verdade esse fluxo de bytes está pulando na Ethernet e atingindo o servidor de terminal, ENTÃO, em um nível UART para RS-232C (mas não necessariamente pinagem) ) cabos para o servidor e de volta da mesma maneira.
Às vezes, não há motivo para realmente chegar a uma UART real, seja qual for a razão, virtualizar uma porta COM para que o software que foi gravado para essas chamadas de API ainda funcione. Talvez você possa pensar sobre o antigo software bancário que ainda usamos, que tem um terminal idiota para uma interface UART, que talvez no passado tivesse sido programado ou tivesse entrado em um modem para eventualmente ser um servidor. Você pode fazê-lo de modo que o software ainda funcione, através de várias quantidades de emulação, incluindo uma porta COM virtual que, hoje, provavelmente simplesmente desce Ethernet para o servidor como um fluxo serial (TCP / IP, por exemplo).