Port COM

Controlul prin portul COM al programului de periferice pentru computere pe VB.

De multe ori, în conferințe de amatori de radio pot auzi întrebarea: „Eu (vreau să fac) un dispozitiv extern și au dorința de a conecta la un calculator prin portul serial, astfel încât acestea într-un fel gestiona, dar nu știu cum.“ portul COM este preferat pentru aceste experimente, deoarece este mai mare decât capacitatea de transport LPT, și, prin urmare, mai puțin probabil să ardă port.

Dacă ați instalat Visual Basic și să aibă abilități de programare pe ea, cel mai simplu, în opinia mea, pentru a folosi componenta Track-gestionare (control) MSComm de control, care este cauzată de Proiect-> Componente-> și bifați pe MSComm de control. Apoi, aveți nevoie pentru a pune acest control asupra formei și a scrie cod de program pentru ea.

Dificultatea constă în faptul că recepția transmisiei printr-un port COM necesită respectarea strictă cu protocolul RS-232, și nu tuturor amatorilor de radio sub puterea de proiectare controler, care ar sprijini acest protocol. Între timp, acest MSComm de control permite citirea și gestionarea terminalelor individuale COM port și de a controla în mod direct, prin urmare, unele dispozitive externe fără a genera temporare protocol serial RS-232.

Ca un exemplu de astfel de dispozitiv extern poate fi redus programator populare PonyProg (deși nu este scris în VB, dar principiul este același). Dacă ne uităm cu atenție la graficul lui, putem vedea că, în unele cazuri (de exemplu, atunci când programarea 24hh chips-uri), principalele informații semnalează portul COM Rx (2) și Tx (3) nu sunt utilizate deloc. Toate comunicațiile trece prin auxiliar conduce CTS (8), DSR (6), DTR (4), RTS (7) (deși, în unele locuri utilizate treia concluzie Tx, și asta vom vorbi).

Pentru a citi starea de ieșire, suficient pentru un port de intrare calculator la dosar semnale pozitive unipolară și renunțarea la convertoare de nivel TTL-RS232. De fapt, aceasta nu corespunde standardului RS-232, dar de cele mai multe porturi cu astfel de niveluri mari de lucru.

Deci, trei pini ai portului COM - CD, CTS, DSR poate fi interogat. Comanda, care permite să ia în considerare starea de astfel de ieșire CTS (8) arata ca acest lucru:

Dacă MSComm1.CTSHolding = False Apoi (1)

Dacă MSComm1.CTSHolding = true Atunci (2).

Asta este, această echipă am intervievat 0 sau 1 este prezent pe pinul CTS.

pot fi derivate DTR și RTS (+ 12V) sau (-12V), și, astfel, se aprinde LED de activare sau un alt dispozitiv de acționare - două porturi de ieșire COM. De exemplu, pentru ieșirea RTS, această comandă:

MSComm1.RTSEnable = False (3) emite un picior 7 + 12Volt.

MSComm1.RTSEnable = True (4) emite un -12Volt 7 picior.

Pe baza acestor comenzi (1) - (4) pot fi aranjate ca un schimb de date simplu, cu un calculator și un protocoale destul de complexe, cum ar fi I2C, SPI, etc. MisroWire Ca un exemplu, puteți vedea termometrul DS1621 PC-ul. și modul de utilizare a acestor comenzi, Alberto Ricci a organizat protocol de comunicare I2C cu termometrul cip DS1621.

Fig.1. Conducere pentru a verifica

Dacă practica nu fi leneș pentru a colecta graficul de 10 minute în figura 1 (poate fi articulat direct de montare pe DB9 conector), și rulați programul Com_device. puteți vedea cum să reacționeze la butoanele programm de închidere și include off-diode electroluminiscente (LED-uri buton), folosind exact acele echipe pe care le-am menționat mai sus (pe „“ Enter „până când acorde o atenție).

Dacă dispozitivul necesită un semnal de puls, și este ușor de obținut. Evident, acest lucru va avea în continuare să se familiarizeze cu protocolul, diagrama de timp RS-232 (Figura 2).

Fig.2. RS-232 Diagrama temporare

După cum se poate observa, există un pic prima pornire, apoi biții de date și apoi un bit de stop (rețineți că această + 12V 0-, -12V este 1). Să presupunem că trimite un bit de start, urmat imediat de un anumit număr de zerouri, de exemplu, în biți 0-1-2-3. Obținem astfel de impulsuri

Figura 3. formarea de impulsuri

Prin variația numărului de impulsuri după începerea, putem schimba durata impulsului (deși cu o lungime etapă de biți). Pentru a face acest lucru, portul trebuie să trimită unul din următoarele numere: FF, FE, FC, F8, F0, E0, C0, 80, 00. Și când FF Lățimea impulsului este minimă la 00- max. Figura 3 prezintă cod de impulsuri - F0.

Pentru calculatorul emis la portul COM al semnalului trebuie doar să emită comanda

MSComm1.Output = „un simbol sau șirul“ (5)

Această comandă este emisă în portul unui cod de caractere ASCII. Și cum putem trimite la portul, de exemplu, numărul de F0 (240 în zecimal)? Acesta este un mod simplu:

MSComm1.Output = Cro (240) (6)

Asta este, vom converti mai întâi numărul 240 la un anumit caracter (nu stiu cum, poti sa te uiti pe masa de cod ASCII) și acest caracter este trimis la portul de ieșire.

Astfel, putem de la calculator pentru a face generatorul de 8 nivele de semnal PWM și de control, de exemplu, viteza de rotație a unui motor de curent continuu ventilator, etc. Odată ce este necesar acest semnal pentru a consolida puterea actuală și nici extern, cu greu ar dori să se ia ca max. curent, care poate emite un ceva COM Port despre 25mA. Se poate lua puterea de la sursa de alimentare calculator. Este posibil să aveți mai mult și numărul mediu de semnal PWM RC-lanț sau amplificator de integrare, aceasta depinde de dispozitiv.

Acum este timpul să apăsați butonul „Enter“ pentru programul Com_device. Veți vedea numărul caseta de intrare. Dacă introduceți unul de la chislel zecimală 255, 254, 252, 248, 240, 224, 192, 128, 0, atunci veți obține o suprafață netedă puls 3 (Tx) de ieșire DB9. Dacă nu aveți un osciloscop, conectați un voltmetru de curent continuu între 5 (GND) și 3 (Tx) constatările și a vedea modul în care schimbarea de tensiune. Am fost o astfel de relație:

După cum se poate observa, imaginea este destul de liniară.

A se vedea modul în care semnalul se schimbă atunci când schimbă proprietățile Interval Timer2 cronometru și să încerce să se alinieze MSComm1.Settings = „1200, N, 8,1“, rată de transfer de schimbare (baud parametru în această linie dupa o rata = 1200).

În cazul în care cele 8 nivele pe care le lipsesc, puteți trimite 2 octeți consecutive:

MSComm1.Output = Cro (240) Chr (255) (7)

Acesta va avea 16 generator de nivel. Utilizarea este deja posibil să se aranjeze DAC 4-biți, iar dacă acesta este completat de comparator extern, a cărui ieșire este interogat de comanda (1), (2), una dintre concluziile CD, CTS, DSR; și este posibil pentru a primi ADC 4-biți, de exemplu, aproximări succesive.

Com_device.rar (Kb 5,2) - arhivă cu codul sursă al programului pentru VB.

Schema de mai jos arată modul de control al vitezei ventilatorului, prin intermediul semnalului PWM generat de la portul de semnal COM Tx. Fan poate fi utilizat de la sursa de alimentare calculator.

Port COM

Figura 4. Circuitul de control al vitezei ventilatorului

Rețineți că pinii 2 și 9 din 3 conector DB combinat în acesta.

FunControl rularea programului (Figura 5) și făcând clic pe butonul radio. Puteți modifica viteza ventilatorului este discret.

Port COM

Figura 5. ventilator fereastra programului de control al vitezei FunControl.

Programul FunControl fișier .exe este în arhiva Exe.rar.

Totul este bun, dar în cele mai multe cazuri, d concluzia ca VA portul COM - DTR și RTS - este destul de dezastruos. Din această situație, este bine-cunoscut și foarte simplu. El este foarte des folosit în dezvoltatorii de micro-dispozitiv cu un deficit de constatări (bine, de exemplu, chiar și în proiectul meu :) Termometru digital). Esența ei constă în utilizarea registrelor de deplasare. Diagrama (Fig. 6) IC1- larg raspandita registrul 74NS595 deplasare. Tranzistory- bine, cum ar fi KT3102, R1..R3-10kOm, R20. R22-1kOm, R12. R19 -100 Om.

Semnalele de la portul COM al computerului prin conectorul DB9 sunt furnizate circuitului de conjugare (Q1. Q3 tranzistori). În schimb, puteți utiliza orice MAH232.

RTC servește ca date seriale de intrare (intrare de date seriale), Tx - ca semnal de schimbare (schimbare de ceas registru de intrare), DTR - ca un semnal de înregistrare (de blocare) (stocare registru de ceas de intrare) - în paranteze desemnează pe foi de date. Te sfătuiesc să descărcați.

Port COM

Fig. 6. Creșterea numărului de linii de ieșire cu ajutorul unui registru de deplasare 74HC595

Port COM

Fig. 7 Programul .Okno

Prin apăsarea butonului 0. 7 selecta o combinație și apăsați butonul „Enter“. Ar trebui să lumineze LED-ul corespunzător. butonul „Clear“ stinge toate LED-urile. LED-urile pot fi folosite în loc de relee sau alte elemente de acționare (desigur, în ceea ce privește capacitatea lor portantă).

Numărul de linii de ieșire poate crește capacitatea registrelor de deplasare, în care știftul 9 trebuie conectat la intrarea ulterioară 14 (ca în diagrama de mai jos).

pierde Desigur LPT portul COM pe cursul de schimb, dar de multe ori viteze mari și nu sunt necesare. Dar astfel încât să nu aveți impresia că acest lucru este prea mult, „frânele“ port, să ia o privire modul de afișare a sistemului de data-timp indicatorul 4 cifre WXGA. Și cu indikatsiey- dinamic și fără microcontrolere! În această frecvență de regenerare a fost de aproximativ 70 Hz și pâlpâirea nu este deloc vizibil.

Port COM

Fig. Schema 8, indicatorul LED data-time-to-4 cifre din

IC1, IC3 - registre de deplasare 74 HC 595, indikatory- de calculatoare vechi AT -korpusov.

La numerele de cod IC1 registru de ieșire incluse în IC 3- poziție de caracter.

Port COM

Fig. 9 Programul .Okno VB_clock și breadboard

Când faceți clic pe knopkok „Time“ și „Data“ este afișat, respectiv, data și ora sistemului.

VBclock.rar - fișier exe program de VBclock.

Următorul exemplu ilustrează capacitatea de ieșire simbolurile de pe programul 7x7 matrice LED RunString. Circuitele de intrare sunt identice cu schema anterioară.

Port COM

Făcând clic pe „simbolul“, puteți afișa un singur caracter, butonul „Linia“ afișează o linie de rulare de lungime arbitrară, puteți introduce în fereastra de intrare linie. Toate scrisorile ați tastat orice text va fi convertit în majuscule. În fereastra RunString (Figura 11) este un domeniu de indicatori 7x7 mnemonice care duplicat ieșire la matrice cu LED-uri.

Port COM
Port COM

RunString fișier de program exe stocate în arhiva Exe.rar

Programul următor afișează matricea LED de Film (schema a rămas același, figura 10), programat imagini animate de dimensiuni pixeli 7x7.

Făcând clic pe cercuri, desena o imagine-va fi împușcat. Salvați-l făcând clic pe unul din butonul „>“ sau „|>“ (Figura 12). Uneori este mai convenabil pentru a desena o imagine „de la zero“, și, uneori, imaginea următoare - doar o ușoară schimbare în cel precedent. Butonul „>“ păstrează cadrul anterior, și continuă pentru a curăța următoarele (toate LED-urile sunt stinse), butonul „|>“ De asemenea, stochează cadrul anterior, dar următorul va fi o repetare a cadrului anterior, pe care îl puteți schimba la voință. butonul "<» возвращает предыдущий кадр.

Port COM

După ce toate cadrele sunt create, faceți clic pe „Start“ - toate imaginile vor fi reproduse în mod constant în fereastra de program, și pe teren cu LED-uri. Iar filmul se va derula la cadrul afișat în fereastra „numărul de cadru». În „Tkadra, m“, selectați timpul de afișare a unui cadru, în milisecunde. Numărul maxim de imagini este limitat la 1000 de program.

Programul de Film de fișier .exe este în arhiva Exe.rar.