Hej jeg sider og tosker rundt i og få en seriel forbindelse til et eksternt MPU kit jeg har makket sammen, jeg har ikke noget problem med at programerer C++ kode til mpu kitet men det der med windows og seriel comm det hænger gevaldigt.
jeg ville gerne have en trin for trin hjælpende hånd til at få det til at virke, jeg har borland builder c/c++ 4 til rådighed,
jeg vil som udgangs pungt gerne have en memoboks hvor jeg kan se hvad der kommer fra kitet og så en edit boks så jeg kan sænde data til kitet med en knap.
jeg har tidligerer forgæves forsøgt mig bcbcomm, og jeg kan barer ikke få det til at virke.
det skulle moske lige nævnes at jeg bruger win 98
Hej Kim
En måde der måske kunne virke. Har ikke testet det, men jeg har tidligere brugt noget ligende 8)
Under fanen system i Borland finden en timer component. Denne vil jeg sætte til et givent tidsinterval, eks. 10mS, så blot fortage en læsning fra comporteren. Husk man skal selv enable timeren.
I construktoren opretter jeg en handle til com1, med opsætningen 9600,8,n,1
For at skrive til com bruges funktionen WriteFile, den har næstes samme syntaks som ReadFile
Man kan naturligvis udvide sin exceptions håndtering hvis man ønsker det.
Noget i denne stil: com.cpp (se header længere nede)
//-------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "com.h"
//-------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
DCB dcb;
DWORD dwError;
BOOL fSuccess;
hCom = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
if(hCom == INVALID_HANDLE_VALUE)
{
MessageBox(NULL,"Comport ikke tilgængelig","Fejl",MB_OK);
}
fSuccess = GetCommState(hCom, &dcb);
if(!fSuccess)
{
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
fSuccess = SetCommState(hCom, &dcb);
if(!fSuccess)
{
MessageBox(NULL,"Comport ikke tilgængelig","Fejl",MB_OK);
CloseHandle(hCom);
}
}
}
//-------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
DWORD dwReadByte;
ReadFile(hCom,&caDataBuf[0],sizeof(caDataBuf),&dwReadByte,NULL);
if(dwReadByte!=0)
{
Memo1->Lines->Add(caDataBuf);
}
}
//--------------------------------------------------------
com.h
//--------------------------------------------------------
#ifndef comH
#define comH
//--------------------------------------------------------#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//--------------------------------------------------------class TForm1 : public TForm
{
__published: // IDE-managed Components
TTimer *Timer1;
TMemo *Memo1;
void __fastcall Timer1Timer(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
HANDLE hCom;
char caDataBuf[255];
};
//-------------------------------------------------------extern PACKAGE TForm1 *Form1;
//-------------------------------------------------------#endif
Hilsen
Thomas Vanting
Indlæg senest redigeret d. 01.05.2006 07:38 af Bruger #176