@PicNick
würdest du mir den source zu Init der serial schnistelle schicken (PC) ?
ich Suche da zur zeit nach eine Phänomen und ich finde es nicht.
Gruß
Auf welcher seite habe gestern die mir bekannten druch gesehen weil ich halt vorher gucken wollte.
Gruß
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
@PicNick
würdest du mir den source zu Init der serial schnistelle schicken (PC) ?
ich Suche da zur zeit nach eine Phänomen und ich finde es nicht.
Gruß
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Code:// Konstanden für Parity #define P_NONE 0 // 0 = kein Parity Bit #define P_EVEN 1 // 1 = gerade #define P_ODD 2 // 2 = ungerade #define P_SPACE 3 // 3 = immer 0 #define P_MARK 4 // 4 = immer 1 #define D_7BIT 0 // 7-Databits #define D_8BIT 1 // 8-Databits #define S_1BIT 0 // 1 Stopbit #define S_1_5BIT 1 // 1.5 Stopbits #define S_2BIT 2 // 2 Stopbits int ComOpen (unsigned Nr,int Baud=9600,int Parity=P_NONE,int Stopbits=S_1BIT,int Databits=D_8BIT);
Code://***************************************************************************** // Öffnet eine serielle Verbindung // Nr : Ist die Nummer des Com-Ports (0=COM1 1=COM2 ...) // Baud : Ist die Bautrate // Parity : 0 = kein Parity Bit // 1 = gerade // 2 = ungerade // 3 = immer 0 // 4 = immer 1 // Stopbits : 0 = Ein Stopbit // 1 = Ein/einhalb Stopbits // 2 = Zwei Stopbits // Bits : 0 = 7 Datenbits // 1 = 8 Datenbits // 7 = 7 Datenbits // 8 = 8 Datenbits // Ergibt 1 wenn eine Schnittstelle geöffnet wurde int ComOpen(unsigned Nr,int Baud,int Parity,int Stopbits,int Databits) { static const int iPMode[]={NOPARITY,EVENPARITY,ODDPARITY,SPACEPARITY,MARKPARITY}; static const int iSMode[]={ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS}; char cName[]="\\\\.\\COM1"; HANDLE hFile; COMMTIMEOUTS sTo; DCB sDcb; if(Nr>=MAX_COM_PORTS)return 0; if(bIsOpen[Nr])return 0; cName[7]='1'+Nr; hFile= CreateFile(cName,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if(hFile==INVALID_HANDLE_VALUE) { hFile=0; return 0; } if(Databits==7)Databits=0; memset(&sDcb,0,sizeof(sDcb)); sDcb.DCBlength=sizeof(sDcb); sDcb.BaudRate = Baud; sDcb.fParity = (Parity!=0)? TRUE:FALSE; sDcb.fBinary = TRUE; sDcb.Parity = iPMode[Parity]; sDcb.StopBits = ONESTOPBIT; sDcb.fOutxCtsFlow = FALSE; sDcb.fOutxDsrFlow = FALSE; sDcb.fDtrControl = DTR_CONTROL_ENABLE; sDcb.fRtsControl = RTS_CONTROL_ENABLE; sDcb.fDsrSensitivity= FALSE; sDcb.fAbortOnError = FALSE; sDcb.ByteSize = (Databits)? 8:7; if(!SetCommState(hFile,&sDcb)) { CloseHandle(hFile); return 0; } sTo.ReadIntervalTimeout = MAXDWORD; // 0 ms Read-Tomeout sTo.ReadTotalTimeoutMultiplier = 0; sTo.ReadTotalTimeoutConstant = 0; sTo.WriteTotalTimeoutMultiplier= 1; // 1*2 ms Write Timeout sTo.WriteTotalTimeoutConstant = 2; if(!SetCommTimeouts((HANDLE)hFile,&sTo)) { CloseHandle(hFile); return 0; } hComFile[Nr]=hFile; bIsOpen [Nr]=TRUE; return 1; }
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Erst mal danke PicNick.
So ganz habe ich das Problem nicht gefunden aber hatte noch nicht wirklich die Zeit zu suchen.
@all
wie machen wir jetzt weiter ?
geht es über haupt weiter ?
Gruß
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Hallo, No-5 !
Natürlich geht's weiter.
Level-0 hat sich soweit bewährt, da sind bei mir keine Probleme aufgetaucht.
Eine Ebene weiter oben würd ich ebenfalls prinzipiell alles lassen wie's ist.
d.h. die Nutzdaten bestehen aus
<16-Bit Zieladdr><16-Bit Sourceaddr> message-abhängige daten
Für IP ist vorne noch 16-Bit Länge
Alles, was von COM kommt, wird an alle IP -Clients geschickt
Alles, was über IP kommt, wird zu COM geschickt.
Allein damit läßt sich eigentlich alles machen.
Die sache mit dynamischen Routing tables hab ich derweil auf die Seite gelegt.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Frage:
@all:
Wollen wir als erstes Broadcasten oder porten, oder beides?
Mir als ahnungsloser würde Port etwas besser gefallen, warum auch immer.
Wir haben zZ. Einen seriellen Server für Broadcast und einen für Ports.
Wer macht jetzt was und welche Server nehmen wir erstmal?
Wo genau dockt UlrichC nachher an?
@NumberFive
Ich bin irgendwie noch nicht ganz im Bilde wie wir bis zu einem gedachten Visual Basic 2005 TCP/IP Port-Client Schulterschluss bekommen.
Welche Funktionen die Library die Du geschrieben hast anbietet.
Kann sein das ich das schon wissen müsste, aber sei so nett und helfe mir mal da kurz auf die Sprünge.
Was das serielle angeht, ich habe im Anfang dieses Threads einen schönen seriellen Porthandler vorgestellt, vielleicht hilf der Dir weiter. Der lief bei mir tadellos. Ich kann dir den auch mailen falls du brauchst.
@PicNick:
Neugier:
Hast Du schon Vorstellungen
a. welche Sensoren und Aktoren Du erstmal unterstützen willst?
b. In welschem Format ihre Werte im Einzelnen sein werden?
c. Welche Adressen Sie haben werden?
d. Haste mal was mit zwei Getriebemotoren?
@Johannes:
Gibt es an diesem Projekt etwas, was Dir gefällt oder nützt? Ich frag das einfach mal, weil die Entwicklung etwas andere Wege genommen hat als am Anfang gedacht war. Aber Teile eurer Grundidee meiner Meinung nach immer noch zu erkennen sind.
Netter Gruß
Die ersten zehn Millionen Jahre waren die schlimmsten. Und die zweiten Zehn Millionen Jahre, die waren auch die schlimmsten.url
Ich habe auch noch Fragen:
@PicNick: Mich juckt es doch in den Fingern, denn ich möcht den ASURO mal dranhängen. Zum einen kann ich aber nicht auf die 1200 Baud umstellen, zum anderen vermisse ich eine Aufstellung der bisher festgelegten Spezifikationen.
Aus dem was ich jetzt sehe und gefunden habe:Sehen die Daten auf der Leitung jetzt so aus:Zitat von PicNick
Wenn ich dass aus einander nehme erhalt ich das:Code:Message Start | Message | | Message Checksum | | | Message End | | | | .-----.-----. - .-----.-----.-----. | STX | MSG | BCC | ETX | '-----'-----' - '-----'-----'-----'Eine Aufstellung/festlegung der "Class" :Code:Message source Class | Message source Ident | | Message destination Class | | | Message destination Ident | | | | | | | | | | Message .-----.-----.-----.-----.-----. - .-----. | SCL | SID | DCL | DID | MSG | '-----'-----'-----'-----'-----' - '-----'
0x53 := Servos ?
0x42 := Analog ?
Prostetnic Vogon Jeltz
2B | ~2B, That is the Question?![]()
![]()
![]()
The Answer is FF!
@Vogon Meinen Serial Server kannst du auf 1200 Baud um stellen.
@all
Ich nehme jetzt PicNick's definition als gegeben an. Ich werde weiter hin das Multicast machen da ich so eine Gemeinsame Componete für die Rechner Komunikation habe. Und nicht so viele Ports offen lassen muß.
Es wird noch ein TCP Port das zu kommen der das Protokoll von Piknick untertützt damit man auch so was Connecten kann.
Damit VB ran kommt werde ich beispiele machen wenn es euch recht ist.
Wenn wir den ASURO ran bekommen das würde mir echt helfen weil:
https://www.roboternetz.de/phpBB2/vi...=172339#172339
Wie machen wir das mit den Classes Ok 0x53 und 0x42 sin weg ich bräuchte aber auch eine Oder zwei wie wollen wir so was regeln ?
Soweit
Gruß
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
geht wunderbar mit purebasic.
habe eine grafische oberfläche mit videocapture,gameboycambild und steuerbuttons sowie messdatenanzeige vom robby über funk auf der grafischen oberfläche.
ist alles sehr einfach zu realisieren. bei mir geht alles über funk vom robby zum pc und zurück. ist eigentlich keine herausforderung. nur ein bisschen rumproggen und schon läuft das ganze.
Ja, Purebasic ist auch eine schöne Alternative.
Ich würde mich über eine weitere Variante zu unseren PC-Clients freuen.
Wie Du gesehen hast ist das hier ein open Source Projekt mit einer offenen Architektur und zum Teil festgelegten Übertragungsprotokollen..
Wenn Du deinen Client an das im Wissensbereich vorgestellte Protokoll anpasst und den Quellcode freigibst würdest Du allen Purebasic -Liebhabern sicher eine große Freude machen.
Wir sind gerade dabei einige standard Classes und Indents festzulegen unter denen Hardware-Peripherie angesprochen werden kann. Das wäre dann sicher auch für Dich wichtig.
Würde mich freuen wenn da was wäre was denen die es nicht so gut drauf haben weiterhilft.
Netter Gruß
Die ersten zehn Millionen Jahre waren die schlimmsten. Und die zweiten Zehn Millionen Jahre, die waren auch die schlimmsten.url
Lesezeichen