kuinka voit lähettää AT-komentoja: stä C

C

champnim

Guest
Haluan valvoa matkapuhelin tietokoneeseen käyttäen ohjelma on kirjoitettu C Haluan tietää, miten voit lähettää tarvitaan komentojen kautta C-ohjelma.

 
Oletan u on kaikki laitteisto vuorovaikutuksessa valmis.

1) Avaa sarjaliikenneportti käyttäen CreateFile
2) Aseta baudrate, stopbits jne. käyttäen SetCommState
3) lukea ja kirjoittaa sarja fi käyttämällä readfile ja WriteFile
4) Oletetaan u haluat lähettää AT OK, muuntaa "AT OK" ascii, ja lähettää sen WriteFile.

Kiitos.

 
Ensimmäinen muuntaa jokaisen luonteen AT-komennon hex koodin ja lähettää sen sarjatuotannossa tai lähettää sen ilman siirtyessään Hex.

 
Muunna ASCII Hex ensimmäinen sitten vain lähettää sen sarjatuotantona.

Kuitenkin, jos puskurin käyttöä pitää AT-komento on ilmoitettu char, se ei tarvitse muuntaa ASCII Hex 1st, mutta voit lähettää komennon suoraan.
Epävarma menetelmä, vain ajatus.

 
Yritän Lähetä "\ r" minun puhelimeen, mutta WriteFile on antaa virheilmoituksen (nro 87) ... pls erottaa we mikä on väärin

# include <iostream>
# include <windows.h>
# include <string.h>

int main ()
(
DCB DCB;
HANDLE hCom;
BOOL fSuccess;
Päällekkäin O;
DWORD dwEvtMask;
char buffer [2048];
char * pcCommPort = "COM4";

hCom = CreateFile (pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, / / comm laitteiden on avattava w / yksinomainen oikeus käyttää
NULL, / / ei tietoturvamäärittein
OPEN_EXISTING, / / comm laitteita on käytettävä OPEN_EXISTING
FILE_FLAG_OVERLAPPED,
NULL / / hTemplate on NULL varten comm laitteet
)

jos (hCom == INVALID_HANDLE_VALUE)
(
/ Käsittele virhe.
printf ( "CreateFile epäonnistui Virhe% d \ n", GetLastError ());
return (1);
)
fSuccess = GetCommState (hCom, ja DCB);

if (! fSuccess)
(
/ Käsittele virhe.
printf ( "GetCommState epäonnistui Virhe% d \ n", GetLastError ());
return (2);
)

/ / Kirjoita DCB: Baud = 9600 bps, 8 databittiä, ei pariteettia, ja 1 stop-bitti.

dcb.BaudRate = CBR_9600, / / aseta siirtonopeus
dcb.ByteSize = 8; / / data koon, XMIT, ja ssä
dcb.Parity = NOPARITY, / / ei pariteettibittiä
dcb.StopBits = ONESTOPBIT, / / one stop bit

fSuccess = SetCommState (hCom, ja DCB);

if (! fSuccess)
(
/ Käsittele virhe.
printf ( "SetCommState epäonnistui Virhe% d \ n", GetLastError ());
return (3);
)

printf ( "Sarjaportti% s on onnistuneesti uudelleen. \ n", pcCommPort);

/ / char * command = "";
unsigned long byteswritten;
if (! WriteFile (hCom, "at \ r", 3, ja byteswritten, NULL))
(
printf ( "WriteFile epäonnistui Virhe% d \ n", GetLastError ());
return (4);
)
/ / printf ( "merkkijono% s onnistuneesti kirjoittanut% s satamaan", komento, pcCommPort);
)

 
Olen aina käyttää tätä tapaa lähettää tietoja

BYTE tiedot [5] = (0);
DWORD byteswritten;
BOOL returnValue;
BYTE bytes2send;
.......
.....

tiedot [0] = 0x41; / / Ascii
data [1] = 0x54; / / Ascii T
tiedot [2] = 0x5C;
tiedot [3] = 0x72;

bytes2send = 4;

returnValue = WriteFile (hCom, ja tiedot, bytes2send, ja byteswritten, NULL);

jos ei vielä, ehkä voi yrittää korvata \ r on rivinvaihto, kuten alla: --
tiedot [0] = 0x41; / / Ascii
data [1] = 0x54; / / Ascii T
tiedot [2] = 0x0d / / Ascii CRbytes2send = 3; Toivottavasti se auttaa.

 

Welcome to EDABoard.com

Sponsor

Back
Top