G
Graziu
Guest
Hej .. Jeg har et problem med telefonen prik kommunikation via RS232.
overhørte trafik ved tilslutning til telefonen ved hjælp af HyperTerminal ..
Men resultatet er meget forskellig fra den, der fremkommer ved mig ... ; |
vidst, at modem (telefon) kommunikerer via AT kommandoer.
betyder sender eksempel:
AT
udskiftes
OK
og begynder problemet .. , /
Jeg har indtryk af, at den sender AT tegn helt anden måde end at sende en HyperTerminal ..
ps. programmeret i C Builder. men nok til at hjælpe mig wc, c , Pascal, osv..
kode fra bogen (sende)
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
//------------------------------------------------ ---------------------------
# Medtag <vcl.h>
Stdio.h
# Pragma hdrstop
# Pragma pakke (smart_init)
# Pragma ressource "*. DFM"
# Include "Unit1.h"
//------------------------------------------------ ---------------------------
# Pragma pakke (smart_init)
# Pragma ressource "*. DFM"
TForm1 * Form1;
HÅNDTAG hCommDev / / Port ID
LpFileName LPCTSTR, / / holder navnet på den havn
DCB DCB, / / struktur på den serielle port kontrol
int __fastcall TForm1:: Close_Comm (håndtag hCommDev)
{
CloseHandle (hCommDev);
returnere sandt;
}
//------------------------------------------------ ---------------------------
__fastcall TForm1: TForm1 (TComponent * Ejer)
: TForm (Ejer)
{
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button5click (TObject * Sender)
{
Close_Comm (hCommDev);
Ansøgning-> Afslut ();
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button4click (TObject * Sender)
{
lpFileName = "COM3";
hCommDev = CreateFile (lpFileName, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (hCommDev! = INVALID_HANDLE_VALUE) / / kontrollere, om porten er
/ / Åben ordentligt
{
dcb.DCBlength = sizeof (DCB);
GetCommState (hCommDev, & DCB);
dcb.BaudRate = CBR_19200;
dcb.Parity = ODDPARITY / / sæt paritet
dcb.StopBits = ONESTOPBIT / / stop bits
dcb.ByteSize = 7, / / databit
/ / Flag-sample-indstillinger kontrol-DCB
dcb.fParity = TRUE / / paritetskontrol
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDsrSensitivity = FALSE;
dcb.fAbortOnError = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
SetCommState (hCommDev, & DCB);
}
andet
{
kontakten ((int) hCommDev)
{
IE_BADID sag:
MessageBox (NULL, "Ugyldigt havn navn eller port er"
". Aktiv", "Error", MB_OK);
break;
};
}
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button1Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, »A«);
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button2Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, 'T');
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button3Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, char (13));
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button6Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, char (10));
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
</td></tr></table>
unit.h føjes til biblioteket:
# Medtag <Classes.hpp>
# Medtag <Controls.hpp>
# Medtag <StdCtrls.hpp>
# Medtag <Forms.hpp>
# Medtag <Buttons.hpp>
# Medtag <ComCtrls.hpp>
# Medtag <Dialogs.hpp>
# Medtag <ExtCtrls.hpp>
i afsnit private: int __fastcall TForm1:: Close_Comm (HÅNDTAG hCommDev);
på denne måde sender brevet efter literce ..
har også prøvet en hel ..
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
# Definer cbOutQueue 64 / / output buffer størrelse
# Definer cbInQueue 64 / / input buffer størrelse
LPCTSTR query = "AT", / / Eksempel query
Buffer_O char [cbOutQueue], / / Buffer udgang
Buffer_I char [cbInQueue] / / input buffer
Number_Bytes_Read DWORD, / / Antal bytes, som Læs - antal bytes
/ / Læsning
HÅNDTAG hCommDev / / Port ID
LpFileName LPCTSTR, / / pointer til portnavn
DCB DCB, / / struktur på den serielle port kontrol
FdwEvtMask DWORD, / / information om den aktuelle tilstand transmission
Comsat Stat / yderligere oplysninger om ressourcer Port
DWORD Fejl / / repræsenterer den type af eventuelle fejl
</td></tr></table>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
int __fastcall Write_Comm (håndtag hCommDev, LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite)
{
NumberOfBytesWritten DWORD;
EscapeCommFunction (hCommDev, SETRTS);
if (WriteFile (hCommDev, lpBuffer,
nNumberOfBytesToWrite, & NumberOfBytesWritten, NULL)> 0)
{
WaitCommEvent (hCommDev, & fdwEvtMask, NULL);
EscapeCommFunction (hCommDev, CLRRTS);
returnere sandt;
}
andet
return false;
}
</td></tr></table>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
void __fastcall TForm1:: ConnectClick (TObject * Sender)
{
lpFileName = "COM3";
hCommDev = CreateFile (lpFileName, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (hCommDev! = INVALID_HANDLE_VALUE) / / check om porten er åben korrekt
{
SetupComm (hCommDev, cbInQueue, cbOutQueue);
dcb.DCBlength = sizeof (DCB), / / DCB strukturen i de nuværende størrelser
GetCommState (hCommDev, & DCB);
dcb.BaudRate = ATOL (("CBR_" Form1-> Speed-> Text). c_str ()) / / valg af hastighed
/ / - ------- Kommunikation parametre
dcb.Parity = NOPARITY / / sæt paritet
dcb.StopBits = ONESTOPBIT / / stop bits
dcb.ByteSize = 8 / / databit
/ / - Justering af kontrolprøven DCB ----
dcb.fParity = TRUE / / paritetskontrol
dcb.fDtrControl = DTR_CONTROL_ENABLE / / DTR permanent
/ / Active
dcb.fRtsControl = RTS_CONTROL_DISABLE / / RTS - staten
/ / Offline
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDsrSensitivity = FALSE;
dcb.fAbortOnError = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
SetCommState (hCommDev, & DCB);
GetCommMask (hCommDev, & fdwEvtMask);
SetCommMask (hCommDev, EV_TXEMPTY);
}
andet
{
kontakten ((int) hCommDev)
{
IE_BADID sag:
MessageBox (NULL, "Ugyldigt havn navn eller porten er aktiv.", "Error", MB_OK);
break;
};
}
/ / FILE * pstree / / pointer til fil
if (hCommDev> 0) / / re-check, hvis porten er åben
{
strcpy (Buffer_O, forespørgsel);
Write_Comm (hCommDev, Buffer_O, strlen (Buffer_O));
}
}
</td></tr></table>
---------
Kan nogen hjælpe? indtil jeg begynde at spille med winapi, så .. du bære over med os .. med støtte også com .. P bare printes ud 140 sider, og jeg er begyndt at læse .. Men .. Enhver hjælp vil være taknemmelig! : D
ingen af de ovennævnte version ikke virker desværre .. ; |
========
edit
========
simpel tommelfingerregel, hvis nogen kan forklare mig hvad der er den paritet bit, stop bits, osv.?
Fordi jeg forstår dette medium og bruge det færdige setup
Jeg kan tilføje, og programmet er at kommunikere med telefonen (com, usb, IrDA, bt) .. Heldigvis er alle disse moduler installeret på August autiomatycznie porrcie COM
og dens niveauer er tilgængelige.
overhørte trafik ved tilslutning til telefonen ved hjælp af HyperTerminal ..
Men resultatet er meget forskellig fra den, der fremkommer ved mig ... ; |
vidst, at modem (telefon) kommunikerer via AT kommandoer.
betyder sender eksempel:
AT
udskiftes
OK
og begynder problemet .. , /
Jeg har indtryk af, at den sender AT tegn helt anden måde end at sende en HyperTerminal ..
ps. programmeret i C Builder. men nok til at hjælpe mig wc, c , Pascal, osv..
kode fra bogen (sende)
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
//------------------------------------------------ ---------------------------
# Medtag <vcl.h>
Stdio.h
# Pragma hdrstop
# Pragma pakke (smart_init)
# Pragma ressource "*. DFM"
# Include "Unit1.h"
//------------------------------------------------ ---------------------------
# Pragma pakke (smart_init)
# Pragma ressource "*. DFM"
TForm1 * Form1;
HÅNDTAG hCommDev / / Port ID
LpFileName LPCTSTR, / / holder navnet på den havn
DCB DCB, / / struktur på den serielle port kontrol
int __fastcall TForm1:: Close_Comm (håndtag hCommDev)
{
CloseHandle (hCommDev);
returnere sandt;
}
//------------------------------------------------ ---------------------------
__fastcall TForm1: TForm1 (TComponent * Ejer)
: TForm (Ejer)
{
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button5click (TObject * Sender)
{
Close_Comm (hCommDev);
Ansøgning-> Afslut ();
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button4click (TObject * Sender)
{
lpFileName = "COM3";
hCommDev = CreateFile (lpFileName, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (hCommDev! = INVALID_HANDLE_VALUE) / / kontrollere, om porten er
/ / Åben ordentligt
{
dcb.DCBlength = sizeof (DCB);
GetCommState (hCommDev, & DCB);
dcb.BaudRate = CBR_19200;
dcb.Parity = ODDPARITY / / sæt paritet
dcb.StopBits = ONESTOPBIT / / stop bits
dcb.ByteSize = 7, / / databit
/ / Flag-sample-indstillinger kontrol-DCB
dcb.fParity = TRUE / / paritetskontrol
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDsrSensitivity = FALSE;
dcb.fAbortOnError = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
SetCommState (hCommDev, & DCB);
}
andet
{
kontakten ((int) hCommDev)
{
IE_BADID sag:
MessageBox (NULL, "Ugyldigt havn navn eller port er"
". Aktiv", "Error", MB_OK);
break;
};
}
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button1Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, »A«);
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button2Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, 'T');
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button3Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, char (13));
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
void __fastcall TForm1:: Button6Click (TObject * Sender)
{
if (hCommDev> 0)
TransmitCommChar (hCommDev, char (10));
andet
MessageBox (NULL, "Port er ikke åbent for transmissionen."
"Fejl", MB_OK);
}
//------------------------------------------------ ---------------------------
</td></tr></table>
unit.h føjes til biblioteket:
# Medtag <Classes.hpp>
# Medtag <Controls.hpp>
# Medtag <StdCtrls.hpp>
# Medtag <Forms.hpp>
# Medtag <Buttons.hpp>
# Medtag <ComCtrls.hpp>
# Medtag <Dialogs.hpp>
# Medtag <ExtCtrls.hpp>
i afsnit private: int __fastcall TForm1:: Close_Comm (HÅNDTAG hCommDev);
på denne måde sender brevet efter literce ..
har også prøvet en hel ..
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
# Definer cbOutQueue 64 / / output buffer størrelse
# Definer cbInQueue 64 / / input buffer størrelse
LPCTSTR query = "AT", / / Eksempel query
Buffer_O char [cbOutQueue], / / Buffer udgang
Buffer_I char [cbInQueue] / / input buffer
Number_Bytes_Read DWORD, / / Antal bytes, som Læs - antal bytes
/ / Læsning
HÅNDTAG hCommDev / / Port ID
LpFileName LPCTSTR, / / pointer til portnavn
DCB DCB, / / struktur på den serielle port kontrol
FdwEvtMask DWORD, / / information om den aktuelle tilstand transmission
Comsat Stat / yderligere oplysninger om ressourcer Port
DWORD Fejl / / repræsenterer den type af eventuelle fejl
</td></tr></table>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
int __fastcall Write_Comm (håndtag hCommDev, LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite)
{
NumberOfBytesWritten DWORD;
EscapeCommFunction (hCommDev, SETRTS);
if (WriteFile (hCommDev, lpBuffer,
nNumberOfBytesToWrite, & NumberOfBytesWritten, NULL)> 0)
{
WaitCommEvent (hCommDev, & fdwEvtMask, NULL);
EscapeCommFunction (hCommDev, CLRRTS);
returnere sandt;
}
andet
return false;
}
</td></tr></table>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"><tr><td> <b>Kode:</b> </td></tr><tr><td class="code">
void __fastcall TForm1:: ConnectClick (TObject * Sender)
{
lpFileName = "COM3";
hCommDev = CreateFile (lpFileName, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (hCommDev! = INVALID_HANDLE_VALUE) / / check om porten er åben korrekt
{
SetupComm (hCommDev, cbInQueue, cbOutQueue);
dcb.DCBlength = sizeof (DCB), / / DCB strukturen i de nuværende størrelser
GetCommState (hCommDev, & DCB);
dcb.BaudRate = ATOL (("CBR_" Form1-> Speed-> Text). c_str ()) / / valg af hastighed
/ / - ------- Kommunikation parametre
dcb.Parity = NOPARITY / / sæt paritet
dcb.StopBits = ONESTOPBIT / / stop bits
dcb.ByteSize = 8 / / databit
/ / - Justering af kontrolprøven DCB ----
dcb.fParity = TRUE / / paritetskontrol
dcb.fDtrControl = DTR_CONTROL_ENABLE / / DTR permanent
/ / Active
dcb.fRtsControl = RTS_CONTROL_DISABLE / / RTS - staten
/ / Offline
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDsrSensitivity = FALSE;
dcb.fAbortOnError = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
SetCommState (hCommDev, & DCB);
GetCommMask (hCommDev, & fdwEvtMask);
SetCommMask (hCommDev, EV_TXEMPTY);
}
andet
{
kontakten ((int) hCommDev)
{
IE_BADID sag:
MessageBox (NULL, "Ugyldigt havn navn eller porten er aktiv.", "Error", MB_OK);
break;
};
}
/ / FILE * pstree / / pointer til fil
if (hCommDev> 0) / / re-check, hvis porten er åben
{
strcpy (Buffer_O, forespørgsel);
Write_Comm (hCommDev, Buffer_O, strlen (Buffer_O));
}
}
</td></tr></table>
---------
Kan nogen hjælpe? indtil jeg begynde at spille med winapi, så .. du bære over med os .. med støtte også com .. P bare printes ud 140 sider, og jeg er begyndt at læse .. Men .. Enhver hjælp vil være taknemmelig! : D
ingen af de ovennævnte version ikke virker desværre .. ; |
========
edit
========
simpel tommelfingerregel, hvis nogen kan forklare mig hvad der er den paritet bit, stop bits, osv.?
Jeg kan tilføje, og programmet er at kommunikere med telefonen (com, usb, IrDA, bt) .. Heldigvis er alle disse moduler installeret på August autiomatycznie porrcie COM