G
gast
Gast
hallo,
ich habe mir einen kleinen mikrocontroller gebaut, der über die serielle schnittstelle angeschlossen wird. Mit diesem kann ich spannung und stromstärke messsen. Ich habe mit C ein programm entwickelt, dass die werte des controllers über die serielle schnittstelle abfragt und anschließend ausgibt.
Ich programmiere eigentlich lieber mit java und versuche jetzt dieses programm in java zu übersetzen. Leider habe ich nun aber festgestellt, dass es zu diesem thema bei weitem nicht so viele tutorials für java gibt, wie für c.
Vielleicht könnt ihr mit helfen mein programm in java zu übesetzen.
Info :
Ich habe mir bereits das java comm api runtergeladen und konfiguriert. Dieses funktioniert nun auch fehlerfrei.
Hier die C Methode, die eine Verbindung zum controller herstellt:
Die Messwerte können beim Mikrocontroller mit folgender Methode abgefragt werden :
Über Hilfe würde ich mich sehr freuen!
Vielen Dank!
ich habe mir einen kleinen mikrocontroller gebaut, der über die serielle schnittstelle angeschlossen wird. Mit diesem kann ich spannung und stromstärke messsen. Ich habe mit C ein programm entwickelt, dass die werte des controllers über die serielle schnittstelle abfragt und anschließend ausgibt.
Ich programmiere eigentlich lieber mit java und versuche jetzt dieses programm in java zu übersetzen. Leider habe ich nun aber festgestellt, dass es zu diesem thema bei weitem nicht so viele tutorials für java gibt, wie für c.
Vielleicht könnt ihr mit helfen mein programm in java zu übesetzen.
Info :
Ich habe mir bereits das java comm api runtergeladen und konfiguriert. Dieses funktioniert nun auch fehlerfrei.
Hier die C Methode, die eine Verbindung zum controller herstellt:
Code:
void TForm1::set_com(int baud)
{
CloseHandle( hSerial ); // Schnittstelle schliesen
DCB myCom; // Struktur definieren
hSerial = NULL;
// Com - Port öffnen
hSerial = CreateFile( "COM4", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0 );
// Timeout bearbeiten
GetCommTimeouts( hSerial, &TOutAlt ); // Alte Einstellung speichern
TOutNeu.ReadTotalTimeoutConstant = 100; // Angabe ms
TOutNeu.ReadTotalTimeoutMultiplier = 0; // Lese Multiplikator in ms
TOutNeu.WriteTotalTimeoutMultiplier = 0; // Schreibe Multiplikator
TOutNeu.WriteTotalTimeoutConstant = 0;
SetCommTimeouts( hSerial, &TOutNeu ); // Neue Werte setzen
myCom.DCBlength = sizeof(DCB); // Speicherplatz schaffen
GetCommState( hSerial, &myCom ); // Aktuelle Einstellung laden
//BuildCommDCB("9600,N,8,1", &myCom ); // Neue Werte einstellen
myCom.BaudRate = baud; // Baudrate setzen
myCom.ByteSize = 8; // Anzahl Datenbits setzen
myCom.Parity = NOPARITY; // Parity einstellen
myCom.StopBits = ONESTOPBIT; // Stopbit einstellen
myCom.fDtrControl = DTR_CONTROL_DISABLE;
myCom.fRtsControl = RTS_CONTROL_DISABLE;
SetCommState( hSerial, &myCom ); // Werte setzen
}
Die Messwerte können beim Mikrocontroller mit folgender Methode abgefragt werden :
Code:
int TForm1::auslesen(char channel)
{
unsigned int i=0;
unsigned char a=0, b=0;
char szBuff[1];
DWORD dwRead = 0;
for(char i=0;i<=1;i++)
{
TransmitCommChar( hSerial, channel);
Sleep(100);
ReadFile( hSerial, szBuff, 2, &dwRead, NULL );
}
a=szBuff[0];
b=szBuff[1];
i=a;
i=i<<8;
i=i+b;
return i;
}
Über Hilfe würde ich mich sehr freuen!
Vielen Dank!