O que é um porto de gato em um computador? Quais são os portos de um computador pessoal? E o que são eles? Como desativar as portas USB quando você desligar o computador

Descrição da interface RS-232, o formato dos conectores usados \u200b\u200be a atribuição das saídas, sinais, protocolo de câmbio de dados.

descrição geral

A interface RS-232, chamada oficialmente "EIA / TIA-232-E", mas mais conhecida como a interface "COM porta", anteriormente foi uma das interfaces mais comuns em técnico de informática. Ele ainda se encontra em computadores de mesaApesar da aparência de mais velocidade e interfaces "inteligentes", como USB e Fireware. Suas vantagens do ponto de vista dos radioamadores podem ser atribuídas à baixa velocidade mínima e simplicidade da implementação do protocolo no dispositivo caseiro.

A interface física é implementada por um dos dois tipos de conectores: DB-9M ou DB-25M, este último nos computadores atualmente disponíveis não é praticamente encontrado.

Nomeação de conclusões do conector de 9 pinos


Plugue do tipo DB-9M de 9 pinos
Números de contato do pino.
A direção dos sinais é indicada em relação ao host (computador)
Contato Sinal Direção Descrição
1 CD Entrada Carregamento detectado
2 Rxd. Entrada Dados aceitos
3 Txd. Resultado Dados transmitidos
4 Dtr. Resultado Host pronto
5 Gnd. - Fio comum
6 Dsr. Entrada O dispositivo está pronto
7 RTS. Resultado Host pronto para transmissão
8 Cts. Entrada O dispositivo está pronto para receber
9 Ri. Entrada Um desafio foi encontrado

Nomeação das conclusões do conector de 15 pinos

Contato Sinal Direção Descrição
1 Escudo. - Tela
2 Txd. Resultado Dados transmitidos
3 Rxd. Entrada Dados aceitos
4 RTS. Resultado Host pronto para transmissão
5 Cts. Entrada O dispositivo está pronto para receber
6 Dsr. Entrada O dispositivo está pronto
7 Gnd. - Fio comum
8 CD Entrada Carregamento detectado
9 - - reserva
10 - - reserva
11 - - Não usado
12 Scd. Entrada A transportadora é detectada. # 2
13 Scts. Entrada Dispositivo pronto para a recepção # 2
Contato Sinal Direção Descrição
14 Stxd. Resultado Dados transmitidos # 2
15 Trc. Entrada Tomando transmissor
16 Srxd. Entrada Dados aceitos # 2
17 Rcc. Entrada Tato no receptor
18 Lloop. Resultado Loop local.
19 Srts. Resultado Host pronto para transmitir # 2
20 Dtr. Resultado Host pronto
21 RLOOP. Resultado Loop externo
22 Ri. Entrada Um desafio foi encontrado
23 Drd. Entrada A velocidade dos dados é determinada
24 Trco. Resultado Tome o transmissor externo
25 Teste Entrada Modo de teste

A tabela mostra que a interface de 25 pinos é distinguida pela presença de um segundo canal de recebimento completo (sinais indicados "# 2"), bem como numerosos sinais de controle e controle adicionais. No entanto, muitas vezes, apesar da presença no conector "largo" do computador, os sinais adicionais simplesmente não estão conectados nele.

Características elétricas

Níveis de transmissor lógico: "0" - de +5 a +15 volts, "1" - de -5 a -15 volts.

Níveis lógicos do receptor: "0" - acima de +3 volts, "1" - abaixo de -3 volts.

resistência de entrada receptor pelo menos 3 com.

Essas características são definidas pelo padrão como mínimo, garantindo a compatibilidade do dispositivo, no entanto, as características reais são geralmente significativamente melhores, o que permite, por um lado, para alimentar dispositivos de baixa potência da porta (por exemplo, numerosos cabos de dados caseiros são desenhado para celulares), e do outro - para se submeter ao porto do porto invertido Nível TTL em vez de um sinal bipolar.

Descrição dos principais sinais da interface

CD - O dispositivo define este sinal quando detecta a transportadora no sinal recebido. Normalmente, esse sinal é usado por modems, que relatam assim o host na descoberta do modem de trabalho na outra extremidade da linha.

Rxd. - Receba os dados do host do dispositivo. Descrito em detalhes na seção "Protocolo de Dados Exchange".

Txd. - Linha de transferência de host de dados para o dispositivo. Descrito em detalhes na seção "Protocolo de Dados Exchange".

Dtr. - O host define este sinal quando estiver pronto para trocar dados. Na verdade, o sinal é definido quando você abre a porta do programa de comunicação e permanece nesse estado o tempo todo até a porta estar aberta.

Dsr. - O dispositivo define este sinal quando ativado e pronto para trocar dados com host. Isso e os sinais anteriores (DTR) devem ser instalados para trocar dados.

RTS. - O host define este sinal antes de iniciar a transferência de dados para o dispositivo e também sinaliza prontidão para receber dados do dispositivo. Usado quando o controle de hardware da troca de dados.

Cts. - O dispositivo define este sinal em resposta à instalação anterior do host (RTS) quando está pronto para receber dados (por exemplo, quando os dados do host anteriores enviados são transmitidos para a linha na linha ou há um espaço livre no intermediário amortecedor).

Ri. - O dispositivo (geralmente modem) define este sinal ao receber uma chamada do sistema remoto, por exemplo, ao receber chamada telefónicaSe o modem estiver configurado para receber chamadas.

Protocolo de câmbio de dados.

O protocolo RS-232 existe dois métodos de gerenciamento de dados: hardware e software, bem como dois modos de transmissão: síncronos e assíncronos. O protocolo permite que você use qualquer um dos métodos de gerenciamento junto com qualquer modo de transmissão. Trabalhar sem controle de fluxo também é permitido, o que implica a constante prontidão do host e do dispositivo para receber dados quando a conexão é definida (DTR e DSR sinais são instalados).

Método de controle de hardware É implementado usando sinais RTS e CTS. Para transferir o host de dados (computador), define o sinal RTS e aguarda o sinal CTS para ser instalado, após o qual os dados são iniciados até que o sinal CTS esteja definido. O sinal CTS é verificado pelo host imediatamente antes de iniciar a transmissão do próximo byte, então o byte, que já começou a ser transmitido, será transmitido completamente independentemente do valor CTS. No modo de troca de dados meio duplex (o dispositivo e o host transmite dados por sua vez, no modo Full-Duplex, eles podem fazer isso ao mesmo tempo) Remoção do sinal RTS pelo host significa sua transição para o modo de recepção.

Método de gerenciamento de software É para transferir o host de símbolos de parada especiais (símbolo com código 0x13, chamado Xoff) e renovação (símbolo com código 0x11, chamado Xon). Ao receber esses caracteres, a parte transmissora deve parar a transmissão de acordo ou retomar (se houver dados à espera da transmissão). Esse método é mais fácil em termos de implementação do equipamento, no entanto, fornece uma reação mais lenta e, consequentemente, requer a notificação do transmissor do transmissor quando o espaço livre é reduzido no buffer receptor em um determinado limite.

Modo de transmissão síncrono Implica uma troca de dados contínua quando os bits seguem um após o outro sem pausas adicionais a uma determinada velocidade. Este modo de porta COM não suportado.

Modo de transmissão assíncrona É que cada byte de dados (e o bit de controle de paridade, no caso de sua presença), "acaba" uma sequência sincronizada de um bit de zero e um ou mais pequenos bits de parada. Diagrama de fluxo de dados no modo assíncrono é apresentado na figura.

Um dos possíveis algoritmos do receptor Segue:

  1. Espere o nível "0" do sinal de recepção (RXD no caso de um host, TXD no caso de um dispositivo).
  2. Contagem metade da duração da bateria e verifique se o nível do sinal ainda é "0"
  3. Contagem de duração total e nível de sinal atual Escreva para o lote de dados mais jovens (bit 0)
  4. Repita o item anterior para todos os outros bits de dados
  5. Conte a duração total de um pouco e o nível de sinal de corrente para usar para verificar a exatidão da recepção usando o controle de paridade (veja abaixo)
  6. Esprema a duração total e certifique-se de que o nível atual do sinal "1".

Ao calcular, a porta serial é uma interface de comunicação serial através do qual as informações são transmitidas ou emitidas de cada vez. Para a maior parte da história de computadores pessoais, os dados foram transmitidos por meio de portas seriais em dispositivos, como modems, terminais e vários dispositivos periféricos.

Embora interfaces como Ethernet, FireWire e USB, todos enviem dados como fluxo seqüencial, o termo "porta serial" normalmente identifica hardware., mais ou menos compatível com o padrão RS-232, destinado a interagir com um modem ou com um link de comunicação semelhante.

Computadores modernos sem portas seriais podem exigir conversores com uma interface serial para garantir compatibilidade com dispositivos seriais RS-232. As portas seriais ainda são usadas em aplicativos, como sistemas de automação industrial, dispositivos científicos, sistemas de vendas e alguns bens industriais e consumidores. Os computadores do servidor podem usar uma porta serial como um console de gerenciamento ou diagnóstico. Equipamento de rede (por exemplo, roteadores e switches) geralmente usam o console serial para a configuração. As portas seriais ainda são usadas nessas áreas, uma vez que são simples, baratas e suas funções de console são altamente padronizadas e generalizadas.

Pinout de porta COM (RS232)

Existem 2ª variedades da porta COM, conector antigo de 25 pinos e substituiu seu novo conector de 9 pinos.

Abaixo está um diagrama de um conector padrão de 9 pinos padrão RS232 com conectores, este tipo de conector também é chamado de conector DB9.

  1. Detecção de transportadora (DCD).
  2. Dados obtendo (RXD).
  3. Transferência de dados (TXD).
  4. Prontidão para a troca do receptor (DTR).
  5. Terra (GND).
  6. Prontidão para a troca da fonte (DSR).
  7. Pedido de transferência (RTS).
  8. Prontidão de transmissão (CTS).
  9. Sinal de chamada (RI).

RJ-45 para informações do DB-9 Sobre a saída do adaptador de porta sequencial para o comutador

A porta do console é a interface serial RS-232, que usa o conector RJ-45 para se conectar ao dispositivo de controle, como um PC ou laptop. Se não houver um PIN PIN do DB-9 no seu laptop ou PC, e você deseja conectar um laptop ou PC ao switch, use a combinação do adaptador RJ-45 e DB-9.

DB-9.RJ-45.
Dados obtendo2 3
Transferência de dados3 6
Promoção de troca4 7
Terra5 5
Terra5 4
Promoção de troca6 2
Pedido de transferência7 8
Prontidão para transmissão8 1

Cores do fio:

1 preto
2 Brown.
3 vermelho
4 Laranja
5 amarelo
6 verde
7 azul
8 cinza (ou branco)

Às vezes você tem que resolver a tarefa de comunicação aparelho eletrônico Com um computador, se é simplesmente dados trocados ou controle remoto. Este artigo descreve como isso pode ser implementado usando uma porta serial. Sua principal vantagem é aquele software padrão interface do Windows. (API) permite que você controle diretamente linhas de saída, dando controle direto sobre eles e tem uma função de esperar por um determinado evento associado à porta COM. Além disso, o padrão RS-232 para o qual as portas COM são feitas, permite conectar e desligar os cabos durante a operação dos dispositivos (plugue quente).

Descrição

Porto COM (porta serial) - Interface bidirecional transmitindo dados em um formulário seqüencial (bit além) via protocolo RS-232. Este é um protocolo bastante comum usado para comunicar um dispositivo (por exemplo, um computador) com outros fios até 30m. Os sinais lógicos são diferentes aqui do padrão: o nível da unidade lógica é de +5 a + 15V, o nível de zero lógico é de -5 a -15V, que requer transformações adicionais do circuito, mas fornece boa imunidade de ruído.

Considere um conector de 9 pinos (DB-9M). Abaixo está a sua pinagem:

Saída №. Nome Personagem de sinal Sinal
1 Dcd. Entrada Detecção do transportador de dados.
2 Rxd. Resultado Transmitir dados.
3 Txd. Entrada Receber dados.
4 Dtr. Resultado Terminal de dados pronto
5 Gnd. - Chão.
6 Dsr. Entrada Conjunto de dados pronto
7 RTS. Resultado Pedido para enviar.
8 Cts. Entrada Claro para enviar.
9 Ri. Entrada Indicador de anel

Acima de tudo, estaremos interessados \u200b\u200bem pinos 2 (transferência de dados), 3 (recepção de dados) e 5 (terra). Este é um conjunto mínimo para a possibilidade de aparelhos de dupla face.

Começando detalhadamente sobre a descrição do protocolo não. Para isso, há GOST e semelhantes. Portanto, vamos ir mais longe e vamos falar sobre como gerenciar esta besta.

Aplicativo

Como já mencionado, os níveis de RS-232 diferem dos níveis padrão TTL. Portanto, precisamos de alguma forma converter valores de tensão. Aqueles. Faça 5V de + 15V e 0V de -15V (e vice-versa). Uma das maneiras (e, provavelmente, mais fácil) - o uso de um microcircuito especial Max232. É fácil entender e, ao mesmo tempo, pode converter dois sinais lógicos.

Abaixo está o esquema de sua inclusão:


Eu acho que não deveria haver dificuldade. Este é um dos usos deste chip: transmissão de dados de um microcontrolador em um computador e vice-versa. O sinal transmitido vem nas pernas t x.De um lado e em r x.No outro. Sinais de entrada são removidos de t x.Fora e R. x.Fora, respectivamente.

Programação

Para começar, vamos falar sobre portas de programação em um nível baixo. Então, será mais correto. Passei muitos nervos, lidando com essa interface, até que comecei a mergulhar no princípio de seu trabalho em um nível inferior do que transferência simples Símbolos. Se estiver claro, isso significa que não haverá problemas com linguagens de alto nível.

Abaixo estão os endereços das portas COM com as quais teremos que trabalhar:

Nome do porto. Endereço IRQ.
COM 1. 3F8h. 4
COM 2. 2f8h 3
COM 3. 3e8h 4
COM 4. 2e8h. 3

Eles podem variar. Defina valores nas configurações do BIOS. Isso é endereços básicos. Eles também dependerão do endereço dos registros responsáveis \u200b\u200bpelo trabalho das portas:

Endereço Dlab. Leitura / escrita Abreviação Registre o nome
+ 0 =0 Escreva Transmissor Holding Buffer.
=0 Leitura. Buffer do receptor.
=1 Ler escrever. Divisor Latch Low Byte
+ 1 =0 Ler escrever. Ier. Interrupção de Ativar registro
=1 Ler escrever. Divisor Latch High Byte
+ 2 - Leitura. IIR. Registro de identificação de interrupção
- Escreva FCR. Registo de controle FIFO.
+ 3 - Ler escrever. Lcr. Registro de controle de linha.
+ 4 - Ler escrever. MCR. Registro de controle de modem.
+ 5 - Leitura. LSR. Registro de status de linha.
+ 6 - Leitura. Msr. Registro de status de modem.
+ 7 - Ler escrever. Registro de arranhões.

A primeira coluna é o endereço de registro relativo ao básico. Por exemplo, para COM1: O endereço de registro de LCR será 3F8H + 3 \u003d 3FB. A segunda coluna - DLAB (Bit de Acesso ao Divisor Latch), definindo um propósito diferente para o mesmo registro .. I.E. Ele permite que você opere com 12 registros usando apenas 8 endereços. Por exemplo, se Dlab \u003d 1, então se referindo a 3F8H, definiremos o valor do byte mais jovem da frequência do gerador do relógio. Se DLab \u003d 0, depois referindo-se ao mesmo endereço, o byte transmitido ou aceito será registrado neste registro.

Registro Zero.

Em conformidade com os registros de registros / transmissão de dados e o coeficiente divisor de frequência do gerador. Como mencionado acima, se DLab \u003d 0, o registro será usado para registrar os dados recebidos / transmitidos, se for 1, o valor do byte inferior do divisor de frequência do relógio é definido. A taxa de transferência de dados depende do valor dessa frequência. O byte divisor mais velho é escrito para a próxima célula de memória (isto é, para a porta COM1, será 3f9h). Abaixo está a dependência da taxa de dados do coeficiente divisor:

Interrupção de Ativar registro (IER)

Se DLab \u003d 0, ele é usado como registro de registro de interrupções de um adaptador assíncrono, se DLab \u003d 1, então ele define um byte sênior da frequência do gerador do relógio.

Registro de identificação de interrupção (IIR)

A interrupção é um evento no qual a execução do programa principal pára e o procedimento de interrupção começa. Este registro determina o tipo de interrupção.

Registro de controle de linha (LCR)

Este é o registro de controle.

Bit 7. 1 Bit de Acesso ao Divisor Latch - Velocidade de troca de dados
0 Modo comum (controle de interrupção, recepção / transmissão de dados)
Bit 6. Mimic Line Break (envia uma sequência de vários zeros)
Bits 3 - 5 Bit 5. Bit 4. Bit 3. Escolha da crença
X. X. 0 Nenhuma paridade.
0 0 1 Paridade estranha.
0 1 1 Paridade par.
1 0 1 Paridade alta (pegajosa)
1 1 1 Paridade baixa (pegajosa)
Bit 2. Número de bits de parada
0 1 pare de bit
1 2 Parar bits em 6,7 ou 8 bits de dados ou 1,5 pontos de parada com 5 bits de dados.
Bits 0 e 1 Bit 1. Bit 0. Número de bits de dados
0 0 5 bits.
0 1 6 bits.
1 0 7 bits.
1 1 8 bits.

Verificar a prontidão implica a transmissão de outro bit - o ponto de prontidão. Seu valor é definido de tal maneira que no pacote de bits, o número total de unidades (ou zeros) foi mesmo ou ímpar, dependendo da instalação dos registros de porta. Este bit é usado para detectar erros que podem ocorrer durante a transmissão de dados devido à interferência na linha. O dispositivo de recebimento calcula a paridade dos dados e compara o resultado com um bit de paridade. Se a paridade não coincidiu, acredita-se que os dados são transmitidos com um erro.

Parar o bit significa terminar a transferência de dados.

Registro de controle de modem (MCR)

Registro de controle de modem.

Pedaço Valor
0 Linha dtr.
1 Linha de rts.
2 Linha Out1 (Spare)
3 Linha Out2 (Spare)
4 Iniciando diagnósticos ao inserir um adaptador assíncrono, fechado em sua saída.
5-7 Igual 0.

Registro de status de linha (LSR)

Registre-se definindo o status da linha.

Pedaço Valor
0 Os dados são obtidos e prontos para leitura, redefinir automaticamente ao ler dados.
1 Erro de estouro. Um novo byte de dados foi adotado, e o anterior ainda não foi lido pelo programa. O byte anterior é perdido.
2 O erro é redefinido após a leitura do status da linha.
3 Erro de sincronização.
4 Um pedido para interromper a transmissão "Break" é detectado - uma longa linha de zeros.
5 O registro de armazenamento do transmissor está vazio, você pode gravar um novo byte para transmissão.
6 O registro de deslocamento do transmissor está vazio. Este registro recebe dados do registro de armazenamento e os converte em um tipo de série para transmissão.
7 Tempo limite (o dispositivo não está conectado ao computador).

Registro de status de modem (MSR)

Registro de status de modem.

É isso. Operando esses registros, você pode se comunicar diretamente com a porta COM, controlar a transmissão e a recepção de dados. Se você não quiser mexer com a memória, poderá usar componentes já prontos para vários ambientes de programação: C ++, VB, Delphi, Pascal, etc. Eles são intuitivos, então, acho que não vale a atenção aqui.

Stopbits. - Define o número de bits de parada. O campo talvez
Assuma os seguintes valores:


  • Onestopbit. - um pouco de parada;
  • One5stopbit. - um e meio stop bits (praticamente não
    usava);
  • Twotopbit. - Dois bits de parada.

Depois de todos os campos de estrutura do DCB, você precisa
Configurando a porta chamando a função SetCommState:

Bool setcommstate (

Lidar com hfile.

Lpdcb lpdcb.

Em caso de conclusão bem-sucedida, a função retornará diferente de zero
valor e em caso de erro - zero.

A segunda estrutura obrigatória para configurar a porta é
Estrutura de Commtimeouts. Define parâmetros temporários de atraso
Ao receber. Aqui está uma descrição dessa estrutura:

typedef struct _commtimeouts (

Dword readintervaltimeout;

Dword readtotaltimeoutmultiplier;

DWORD leadtotoltimeoutconstant;

Dword writetoltimeoutmultiplier;

DWORD WritetolTimeOutconstant;

) CommtTimeouts, * lpcommttimeouts;

Campos de estrutura de Commtimeouts têm os seguintes valores:


  • Readintervaltimeout. - Intervalo máximo de tempo
    (em milissegundos) permitido entre dois legíveis
    Linha de comunicação por personagens sucessivos. No decorrer
    O tempo de ler o período de tempo começa a contar
    recepção do primeiro símbolo. Se o intervalo entre dois
    Caracteres seqüenciais excederão o valor especificado, operação
    Leitura e todos os dados acumulados em buffer são transmitidos
    no programa. Valor zero este campo significa que dado
    Tempo limite não é usado.
  • Readtotaltimeoutmultiplier. - Especifica o multiplicador (em


    multiplicado pelo número de caracteres solicitados a ler.
  • Readtotaltimeoutconstant. - Especifica a constante (em

    Operações de leitura. Para cada operação de leitura, este valor
    mais para o resultado da multiplicação readtotaltimeoutmultiplier em
    O número de caracteres solicitados a ler. Zero campos
    Readtotaltimeoutmultiplier e readtotaltimeoutconstant significa
    Que o tempo limite geral para operação de leitura não é usado.
  • Writetotaltimeoutmultiplier. - Especifica o multiplicador (em
    milissegundos) usado para calcular o tempo limite total

    multiplicado pelo número de caracteres escritos.
  • Writetotaltimeoutconstant. - Especifica a constante (em
    milissegundos) usado para calcular o tempo limite total
    Operações de gravação. Para cada operação de registro, este valor
    Adicionado ao resultado da multiplicação do writetotaltimeoutmultiplier
    O número de caracteres graváveis. Zero campos
    WritetotAtTimeOutmultiplier e WritetotaltimeOutContrant significa
    Que o tempo limite geral da operação de registro não é usado.

Um pouco mais em detalhes sobre os tempos limite. Deixe lermos do porto 50
Símbolos com uma velocidade de 9.600 bits / s. Se 8 bits são usados
no símbolo, além da paridade e uma parada, depois um
O símbolo na linha física é responsável por 11 bits (incluindo bits de partida).
Significa que 50 caracteres a uma velocidade de 9.600 bits serão aceitos

50 × 11/9600 \u003d 0,0572916 com

ou cerca de 57,3 milissegundos, desde que o intervalo zero
entre receber caracteres consecutivos. Se o intervalo entre
Os personagens são aproximadamente metade do tempo de transmissão de um
símbolo, isto é, 0,5 milissegundos, o tempo de recepção será

50 × 11/9600 + 49 × 0,0005 \u003d 0,0817916

ou cerca de 82 milissegundos. Se mais no processo de leitura
82 milissegundos, então temos o direito de assumir que ocorreu um erro em
trabalho do dispositivo externo e pode parar de ler, assim
evitando o congelamento do programa. Esta é a operação geral de tempo limite
leitura. Da mesma forma, há um tempo limite total da operação de registro.

Fórmula para calcular a operação de tempo limite total, por exemplo,
Lendo, se parece com isso:

Numofchar x readtotaltimeoutmultiplier +
Readtotaltimeoutconstant.

onde Numofchar é o número de caracteres solicitados para a operação de leitura.

No nosso caso, a gravação de tempo limite não pode ser usada e
Configurá-los iguais a zero.

Depois de preencher a estrutura do Commtimeouts, você precisa ligar
Recurso de instalação de tempo limite:

Bool setcommtimeouts (

Lidar com hfile.

Lpcommtimeouts lpcommttimeouts.

Como as operações de recepção de transmissão são realizadas a baixa velocidade,
Busting de dados usados. Para definir o tamanho do buffer de recepção e
As transferências devem ser usadas pela função:

Bool setupcomm (

Lidar com hfile.

DWORD DWINQUEUE,

Dword dwoutqueue.

Suponha que você troque com os pacotes de dispositivos externos
informações do tamanho de 1024 bytes, então um tamanho razoável de buffers
Haverá um valor de 1200. A função SETUPCOMM é interessante porque ela pode
Basta levar suas dimensões para anotar, fazendo seus próprios ajustes ou
Em geral, rejeite os tamanhos de buffer oferecidos por você - neste caso
Esse recurso é concluído com um erro.

Eu darei um exemplo de abertura e configuração sequencial
porta com1. Para brevidade - sem definição de erro. Neste exemplo
O porto se abre para trabalhar a uma velocidade de 9.600 bits / c, usado 1
Pare o bit, bit de paridade não é usado:

#Incluir.

. . . . . . . . . .

Lidar com alça;

CommtTimeouts CommtTimeouts;

Dcb dcb;

handle \u003d CreateFile ("COM1", generic_read | generic_write,
Nulo, nulo, open_existing, file_flag_overlapped, nulo);

Setupcomm (alça, sizeBuffer, sizeBuffer);

GetCommstate (alça e dcb);

dcb.baudrate \u003d cbr_9600;

dcb.fbinary \u003d true;

dcb.foutxctsflow \u003d FALSE;

dcb.foutxdsrflow \u003d FALSE;

dcb.fdtrcontrol \u003d dtr_control_handshake;

dcb.fdsrsensitiity \u003d false;

dcb.fnull \u003d falso;

dcb.ftscontrol \u003d rts_control_disable;

dcb.fabortonerror \u003d falso;

dcb.bytesize \u003d 8;

dcb.parity \u003d naparidade;

dcb.stopbits \u003d 1;

Setcommstate (alça e dcb);

Commtimeouts.Readintervaltimeout \u003d 10;

Commtimeouts.ReadtotaltimeoutMultiplier \u003d 1;

// os valores desses horários - as saídas são o suficiente com certeza
recepção

// Mesmo à velocidade 110 baud

CommtTimeouts.ReadtotalTimeOutConstant \u003d 100;

// usado B. este caso como o tempo de espera
parcela

Comttimeouts.writetaltimeoutMultiplier \u003d 0;

Comttimeouts.writetalTimeOutConstant \u003d 0;

Setcommtimeouts (alça, e comttimeouts);

Purgecomm (alça, purge_rxclear);

Purgecomm (alça, purge_txclear);

Depois de abrir a porta, a primeira coisa que você precisa para perdê-lo, então
Como nos buffers de recepção e transmissão pode ser "lixo". Portanto, B.
final do exemplo que aplicamos a função anteriormente não conhecida por nós
Purgecomm:

Bool purgecomm (

Lidar com hfile.

DWORD DWFLAGS.

Esse recurso pode executar duas tarefas: limpe a fila
recepção e transmissão no motorista ou completando todas as operações
E / O. Quais são exatamente as ações para executar, definidas para outra
Parâmetro:


  • Purge_txabort.
    registros, mesmo que não estejam concluídos;
  • Purge_rxabort. - Pare imediatamente todas as operações
    lendo, mesmo que eles não estejam concluídos;
  • Purge_txclear. - Limpa a fila de transmissão no motorista;
  • Purge_rxclear. - Limpa a fila de recepção em
    Motorista.
    Esses valores podem ser combinados usando um
    Operações ou. Buffers limpos são recomendados após erros
    Aceitação e após a conclusão com a porta.

É hora de considerar diretamente as operações
Leitura-escrita para a porta. Como para trabalhar com arquivos, usado
Recursos ReadFile e WriteFile. Aqui estão seus protótipos:

Readfile de bool (

Lidar com hfile.

Lpbufer lpvóide,

Dword nnumofbyTead,

Lpdword lpnumofbytesread,

Lpoverlapped lpoverlapped.

Bool writefile (

Lidar com hfile.

Lpbufer lpvóide,

Dword nnumofbytewrite,

Lpdword lpnumofbyteswritenten,

Lpoverlapped lpoverlapped.

Considere a atribuição dos parâmetros dessas funções:


  • hfile. - Descritor abrir arquivo Comunicação
    porta;
  • lpbuffer. - O endereço do buffer. Para dados de operação de gravação de
    Este buffer será transmitido para a porta. Para ler a operação neste
    O buffer será colocado pelos dados retirados da linha;
  • nnumofbytestoread, nnumofbytewrite. - Número de esperado
    para receber ou destinado a bytes de transmissão;
  • nnumofbytesread, nnumofbyteswritten. - o número de
    bytes aceitos ou transmitidos. Se aceito ou transferido menos
    dados do que solicitados, testemunha ao arquivo de disco
    Sobre o erro, e para a porta de comunicação não é necessariamente.
    Causa em tempo limite.
  • Lpoverlapped. - Endereço da estrutura sobreposta usada
    Para operações assíncronas.

Em caso de conclusão normal, a função é retornada para
diferente de zero, em caso de erro - zero.

Eu darei um exemplo de operação de leitura e escrita:

#Incluir.

…………..

DWORD NUMBYTS, NUMBYTES_OK, TEMP;

Comstat comstate;

Sobreposição sobreposta;

char buf_in \u003d "Olá!";

nUMBYTES \u003d 6;

// Se a Temp não for zero, isso significa que a porta é capaz
Erros

se (! Temp) WriteFile (alça, BUF_IN, NUMBYTES,
& Numbytes_ok e sobreposição);

Clearcommerror (alça, e temp, e comstate);

se (! Temp) Readfile (alça, BUF_IN, NUMBYTES, & NUMBYTES_OK,
& SOBREPOSIÇÃO);

// na variável numbytes_ok contém um número real
transmitido

// byte aceito.

Neste exemplo, usamos dois me desconhecidos mais cedo
Comstat e estruturas sobrepostas, bem como a função ClearCommerror. Para
Nosso caso de comunicação "em três fios" estrutura sobreposta
Considere (basta usar como no exemplo). Função de protótipos
Clearcommerror tem o formulário:

Bool clearcommerror (

Lidar com hfile.

Lpdword lperrors,

Lpcomstat lpstat.

Este recurso redefine o sinal de erro da porta (se houver
lugar) e retorna informações sobre o estado do porto na estrutura
Comstat:

typedef struct _comstat.

DWORD FCTSHOLD: 1;

DWORD FDSRHOLD: 1;

DWORD FRLSDhold: 1;

DWORD FXoffhold: 1;

DWORD FXoffsent: 1;

DWORD FEOF: 1;

DWORD FTXIM: 1;

DWORD Frerred: 25;

DWORD CBINQUE;

Dword cboutque;

) Comstat, * lpcomstat;

Podemos usar dois campos dessa estrutura:


  • Cbinque - O número de caracteres no buffer receptor. Esses símbolos
    retirado da linha, mas ainda não lido pela função ReadFile;
  • Cboutque. - O número de caracteres no buffer de transmissão. Esses
    Os símbolos ainda não são transmitidos à linha.

Os campos restantes desta estrutura contêm informações sobre
Erros.

Finalmente, depois de completar o trabalho com o porto, ele deve ser fechado.
Fechar o objeto no Win32 Executa a função CloseHandle:

Bool closehandle (

Lidar com hobjeto.

Em nosso site você pode encontrar o texto completo da classe para trabalhar com
Porta sequencial no modo assíncrono "em três fios", e
Também um exemplo de um programa usando esta aula. Tudo isso
escrito sob construtor C ++, mas porque apenas as funções são usadas.
API Win32, o texto do programa é fácil de alterar para qualquer compilador C ++.
Também é possível que a classe não seja escrita bastante "de acordo com as regras" - peço
desculpa, o autor não é um programador "certo" e escreve assim
Como é confortável J.

Eu recebo todos de novo nas páginas do seu blog e hoje eu quero contar como conectar com porta USB No Windows. Vamos falar que é e para o que é usado. Eu acho que para administradores de rede novatos, e apenas para usuários avançados será interessante, para mim, de uma só vez foi apenas algum tipo de magia que permite configurar o equipamento do servidor.

O que é conectado via porta COM

Através do porto COM modems anteriormente conectados, ratos. Agora é usado para se conectar a fontes poder ininterrupto, para comunicação com desenvolvimento de hardware de sistemas de computação incorporados, receptores de satélite, registradores de dinheiro, com dispositivos para sistemas de segurança de objetos, bem como com muitos outros dispositivos.

Usando a porta COM, você pode conectar dois computadores usando o chamado "cabo zero-modem" (veja abaixo). Usado a partir dos tempos do MS-Dos para bombear arquivos de um computador para outro, no UNIX para acesso do terminal a outra máquina e no Windows (mesmo moderno) - para o depurador de nível do kernel.

Mas no mundo da rede através da porta COM.conecte-se à porta do cantilever de dispositivos de rede (switches, roteadores, marcas como Cisco ou Juniper)

Qual é o circuito de conectar os alternadores através da porta serial. Há adaptadores, por exemplo, do St-Lab em uma extremidade do USB que você conecta a um computador, e o segundo é uma porta COM.

Instalando porta USB Drivers do COM no Windows

Infelizmente nos dispositivos conectados do Windows, USB para COM nem sempre é instalado automaticamente no sistema, e você precisa pesquisar os drivers. Se você comprou você mesmo, a unidade foi incluída com os drivers, e você pode usá-lo se não for, então, olhe como encontrar drivers.

Abra o Gerenciador de dispositivos no Windows. Se você não sabe como, pressione CTR + Pause Breaz, ou pressione Win + R e digite devmgmt.msc na janela. Como você pode ver na seção Porta (COM e LPT), fiquei encontrado no fio de terceiro porto desconhecido, e os drivers não encontraram para ele do sistema, que o ícone amarelo nos diz.

Vá para propriedades este aparelho E escolha o ID do equipamento, você terá, algo por tipo USB \\ vid_067b & pid_2303 & revel_0300, aqui você está copiando e procurar no Google ou Yandex.

Em seguida, clique no botão direito do meito direito no dispositivo no Gerenciador de dispositivos e selecione Instale os drivers, indique o caminho para eles e coloque se tudo estiver bem, então você tem o ícone desaparecerá Avisos.

Em seguida, você já pode usar as possibilidades da porta COM, usando tais utilitários na aparência de massa, onde você seleciona serial e especifica a porta de porta COM desejada, você pode vê-lo no mesmo gerenciador de dispositivos.

Espero que você tenha aprendido e descobrisse como conectar a porta USB COM no Windows.