Gast
#1958686
Hallo Zusammen.
Ich habe mich wie schon viele hier jetzt auch mit der RS232 beschäftigt.
Ein paar Daten
OS: Windows XP
Compiler: Borland C++
Mein Ziel
Einen A/D Wandler auslesen.
Mein aktueller Stand.
Funktionstüchtiges Programm (mit minimaler Ausstattung, Sicherheit usw)
um über die API Daten über die Datenleitung TxD zu senden.
Mein Anliegen.
Ich kann jetzt so zu sagen über Bitfolgen ein High und low senden, mit
dem ich meinen AD wandler auslesen kann.
Allerdings brauch ich noch einen zweiten ausgang, den ich für die
Wandlung der Daten 17mükrosekunden hochziehen kann.
Daher will ich die DTR leitung dafür nutzen.
Allerdings weis ich nicht genau wie ich sie geziehlt anspechen kann. Bei
dem Start von meinem Programm wird sie hochgezogen, aber das wars dann
auchs schon.
Es wäre schön wenn mir jemand einen link schicken kann um das nach zu
lesen.
Zur Info.
Die Msdn links habe ich schon alle dazu gelesen und mehr bzw weniger gut
verstanden. Borlandhilfe zu dcb habe ich auch schon durch, aber mir kam
bis jetzt kein toller Gedanke.
Hier jetzt noch mein Programm. Nur die c++ unit
wenn ihr die oberfläch auch braucht, einfach bescheid sagen.
Vielen Dank für eure Hilfe
//----------------------------------------------------------------------
-----
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#include "Unit1.h"
//----------------------------------------------------------------------
-----
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//----------------------------------------------------------------------
-----
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//----------------------------------------------------------------------
-----
DCB dcb;
HANDLE hCom;
int a=1,i=0;
DWORD BytesRead, BytesWrite, Dat;
int portid;
char *ComPort[] = {"none","COM1","COM2","COM3","COM4","COM5","COM6"};
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
WriteFile (
hCom,
&Dat,
2,
&BytesWrite,
NULL);
a=a+1;
Label3->Caption=IntToStr(a);
}
//----------------------------------------------------------------------
-----
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
Timer1->Enabled=SpeedButton1->Down;
}
//----------------------------------------------------------------------
-----
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
portid=StrToInt(Edit1->Text);
Label2->Caption=IntToStr(portid);
hCom = CreateFile(ComPort[portid],
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
AnsiString error_1 = GetLastError();
Application->MessageBoxA(error_1.c_str(), "Info");
}
dcb.BaudRate = CBR_256000;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fRtsControl= RTS_CONTROL_DISABLE;
dcb.fInX = FALSE;
if (hCom == INVALID_HANDLE_VALUE)
{
AnsiString error_1 = GetLastError();
Application->MessageBoxA(error_1.c_str(), "Info");
}
}
//----------------------------------------------------------------------
-----
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
CloseHandle( hCom);
}
//----------------------------------------------------------------------
-----
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
Timer1->Interval=StrToInt(Edit2->Text);
}
//----------------------------------------------------------------------
-----