ps. ich sende per infrarot an einen empfänger, der das dann weitersendet.
hallo leute, ich habe einen "asuro"-Roboter und möchte mir auf den pc von ihm aus daten über die serielle schnittstelle rübersenden, was auch klappt, wenn ich sie per hyper-terminal auslese.
wie kann ich daten, die ich bekomme, auch direkt in ein anderes programm (in C) einlesen, um sie dort zu verwenden.
ich hab mich durch google gelesen, und bin dann auf die funktionen CreateFile, WriteFile und ReadFile gekommen. das schreiben mit ReadFile funktioniert, wenn auch sehr unzuverlässig (bekomme manchmal irgend son scheiß rüber), aber readFile funzt kein bisschen.
das ist der quelltext (währenddessen sende ich von meinem Roboter ununterbrochen "aaaaa..." aber er liest nix ein (read == 0)
#include <windows.h>
int main(int argc, char *argv[]){
HANDLE m_hPort;
DWORD read = 0;
char abb[2];
m_hPort = CreateFile( "COM1:", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
ReadFile(m_hPort, abb, 2, &read, NULL);
printf("%i\n",read);
printf("%s\n",abb);
system("PAUSE");
return 0;
}
ps. ich sende per infrarot an einen empfänger, der das dann weitersendet.
das problem ist, um in naturbelassenem C einen com port VERNÜNFTIG zu initialisieren benötigst du alleine schon rund 50 zeilen code, ich rate dir auf www.c-plusplus.de/forum zu gehen und doert im WINAPI forum mal nach einer fertigen c-bibo zu suchen, ich perönlich habe mit C# angefangen um es mir einfacher zu machen ... iss wirklich einfacher, fast wie C++ nur ohne pointer und alles ist in packages verpackt, erinnert stark an java ^^ syntax is stark c++ ähnlich
thx, ich schau ma nach
so, hab mich jez durchgeklick und bin schließlich auf diese seite gelangt: http://www.codeguru.com/cpp/i-n/netw...cle.php/c2503/
hab mich dann auch mit dem c++ code ganz gut auseinandergesetzt (kann eig. nur ansi c), sehr viel gebracht hat es aber nicht, wieder habe ich es geschafft irgendwelchen schrott zu senden (es kam vllt nur jedes 10te zeichen an, und das war dann auch nicht das, was ich eig. gesendet habe).
ich habe auch verschiedene frequenzen ausprobiert (sende beim hyperterminal mit 2400), hat aber nix geholfen =(
lesen will er garnicht....
das is der Quelltext meiner main:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "Serial.h"
using namespace std;
int main(int argc, char *argv[]){
CSerial serial;
if (serial.Open(1, 2400))
{
printf("%i\n",serial.ReadDataWaiting());
char lpBuffer[] = "aaaaaaaaaaaaaaa";
int nBytesRead = serial.ReadData(lpBuffer, sizeof(lpBuffer));
printf("%s", lpBuffer);
}
else
printf("Failed to open port!");
system("PAUSE");
return EXIT_SUCCESS;
}
er gibt mir für das ReadDataWaiting() 0 raus, und danach eben den unveränderten string
Hallo yaro
ich hab mir comport von winsoft.sk runtergeladen. Es ist zwar nur ne demoversion aber dafür ist es leicht zu bedienen!
hab kein delphi, programmiere mit dev-cpp
Keine ahnung ob dein post auf Comport bezogen war oder nicht.
Comport gibts jedenfalls auch für C++
available for Delphi 5, 6, 7, 2005, 2006, 2007 and C++ Builder 4, 5, 6, 2006
kann man damit live daten aus der schnittstelle rauslesen und in ein programm reintun?
am besten wär sowas wie das hyperterminal, dass mir einfach die ankommenden daten in eine datei schreibt. hyperterminal kann das auch, aba eben nicht live, erst wenn die verbindung getrennt ist
mit der cserial bibo biste eigentlich ganz gut bedient ... wie testest du was du sendest/empfängst ?
EDIT: du solltest eine endlosschliefe machen, die regelmäßig prüft ob am port daten zur verfügung stehen ODER ob eine taste gedrückt wurde , damit könntest du erstmal eine echo eingabe simulieren indem du die sende und empfangsleitung vom com port verbindest
Lesezeichen