000
07.07.2004, 15:43 Uhr
~wasa
Gast
|
Tagchen! kann mir jemand sagen wie ich den LPT1 und den COM Port in MFC öffne und anspreche? ComPort habe ich soweit aber er liest nichts aus? Es ist sehr wichtig für mich zu wissen wie es mit dem LPT1 steht! Desweiteren habe ich ne frage zu software. habe eine software und will an den quelltext kommen! wie, wenn überhaupt, ist das möglich? Ich hoffe ihr könnt mir helfen!
VIELEN VIELEN DANK SCHON IM VORAUS! cu wasa
PS: wen es interessiert, habe den quelltext zum öffnen/schreiben/lesen für den COM angehangen! Vielleicht kann mir jemand sagen was daran falsch ist.
C++: |
#include "stdafx.h" #include "COM_PORT1.h"
CCOM_PORT1::CCOM_PORT1(){ }
CCOM_PORT1::~CCOM_PORT1(){ }
HANDLE CCOM_PORT1::Open_Comport_HS(){ HANDLE DriverHandle; DCB Our_DCB;
DriverHandle = CreateFile ("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL);//OPEN_EXISTING if(DriverHandle!=0){ GetCommState(DriverHandle, &Our_DCB);
Our_DCB.BaudRate = 9600; //2400 Our_DCB.ByteSize = 7; Our_DCB.Parity = NOPARITY; Our_DCB.StopBits = TWOSTOPBITS;
Our_DCB.fDtrControl = DTR_CONTROL_ENABLE; Our_DCB.fRtsControl = RTS_CONTROL_HANDSHAKE;
SetCommState(DriverHandle,&Our_DCB);
return DriverHandle; }else return 0; }
int CCOM_PORT1::Read_Comport_HS (HANDLE DriverHandle, DWORD NumBytes, void *Buffer){ DWORD BytesRead; BOOL status; char *ptr;
ptr=(char*)Buffer; status = ReadFile (DriverHandle, Buffer, NumBytes, &BytesRead, 0); ptr+=BytesRead; *(ptr)=0x00; return TRUE; }
int CCOM_PORT1::Write_Comport_HS (HANDLE DriverHandle, DWORD NumBytes, void *Buffer){ DWORD BytesWritten; BOOL status; status = WriteFile (DriverHandle, Buffer, NumBytes, &BytesWritten, 0); //printf("\nSendezahl: %d",NumBytes); return TRUE; }
|
dazugehörige header datei: #include <windows.h>
class CCOM_PORT1{ public: CCOM_PORT1(); ~CCOM_PORT1();
int modul, rc; char DIB[100]; HANDLE Open_Comport_HS(); int Write_Comport_HS (HANDLE DriverHandle, DWORD NumBytes, void *Buffer); int Read_Comport_HS (HANDLE DriverHandle, DWORD NumBytes, void *Buffer); void code_abfrage(char *eb); };
C++: |
//Auszug aus der DLG cpp
void CBachelorDlg::ListenEintrag(CString s_text){
CListBox * liste = (CListBox*) GetDlgItem(IDC_nachrichten); liste->AddString(s_text);
}
void CBachelorDlg::OnOeffnen() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen com_ComHandle1= com_port_1.Open_Comport_HS(); ListenEintrag("COM1 offen"); }
void CBachelorDlg::OnLesen() { char DOB[10], DIB[100]; CString s_Eintrag=""; //DOB[0]=0x74; //DOB[1]=0x31; DOB[0]=0x44; DOB[1]=0x0d; com_port_1.Write_Comport_HS(com_ComHandle1, 2, DOB); ListenEintrag("D gesendet"); Sleep(3000);
com_port_1.Read_Comport_HS(com_ComHandle1, 14, DIB); s_Eintrag.Format("Inhalt: %d", com_port_1.rc); ListenEintrag(s_Eintrag); }
void CBachelorDlg::OnDaten() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen // Verzeichnisabfrage }
void CBachelorDlg::OnLeeren() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen int i;
CListBox * liste = (CListBox*) GetDlgItem(IDC_nachrichten); i = liste->GetCount();
for(int c=0;c<i;c++) liste->DeleteString(0); }
|
|