CNC-Programm über seriellen Port übertragen

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: CNC-Programm über seriellen Port übertragen

Beitrag von NicTheQuick »

@Falko:

Du kannst die Diskette doch roh einlesen und dann in den Rohdaten nach den Quellcodes suchen oder mit binwalk dein Glück versuchen. 1,44 MB sind ja schnell durchforstet. :wink:
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Falko »

@NicTheQuick

Das Problem ist aber, wenn ich die Diskette ins Laufwerk vom PC einstecke, rattert das
Laufwerk los und irgendwann kommt die Meldung, das die Diskette nicht gelesen
werden könne und die Frage, ob man sie formatieren möchte.

Binwalk kenne ich nicht, was für ein Tool ist das und wo kann ich es herunterladen? :)

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Kiffi »

Falko hat geschrieben:Binwalk kenne ich nicht, was für ein Tool ist das und wo kann ich es herunterladen? :)
dürfte das hier sein: http://code.google.com/p/binwalk/
(erster Google-Treffer ;-))

Grüße ... Kiffi
Hygge
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Falko »

Erster Google-Treffer ist gut :wink:
Meiner sah etwas anders aus, da ich direkt
auf den Download gekommen war. Nur wenn ich
richtig sehe, ist das alles für Linux.

[Edit]
Ich glaube es liegt an einem bestimmten Byte, was auf diesen älteren Disketten wohl nicht
vorhanden ist, und darum die zweite Fehlermeldung im folgenden Supportbericht von MS
auftaucht.

http://support.microsoft.com/kb/140060/de


[/Edit]

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Darie »

Hallo, ich bins nochmal :mrgreen:

Ich frage mich gerade, ob das benutzen der Timout-Befehle Sinn ergibt, wenn man vor einem "ReadSerialPortData" den InputBuffer mit AvailableSerialPortInput() überprüft. Mir ist halt nur aufgefallen, dass andere Programme meistens einen Möglichkeit anbieten, einen Timeoutwert einzustellen. Rufe ich ReadSerialPortData ohne eine Prüfung des Buffer auf, dann kehrt die Routine auch erst nach verstreichen des eingest. Timouts wieder zurück. Aber wenn man den Buffer vorher prüft, dürfte doch eigentlich garkein Timeout-Event enstehen ?!

Aldi
Repeat
PureBasic
ForEver
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Falko »

Wenn ich das richtig gelesen habe, kann man eine eigene Procedure
für dieses Timeout schreiben. Ich habe das nur noch nicht ausprobiert.

http://forums.purebasic.com/english/vie ... 13&t=39374

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Falko »

@Darie
Ich schaue gerade, weil ich bei mir mit Preferences was in meinem
TNC-Übertragungsprogramm mit Hardwarehandshake benötige, deinen
Code durch, wie du das mit RTS/CTS gemacht hast. Bei mir will ich
alle Möglichkeiten über die Comboboxen vorgeben und muss wohl einige
Bits mehr setzen bzw. abfragen.

Dabei fällt mir auf, das du folgendes für das STOP-Bit benutzt:
StopBits = Val(GetGadgetText(#ComboBox_25))
Da ich im englischen Forum bezüglich des Stopbits angefragt, habe,
warum man dort nicht genauso wie bei den PB-Constanten für Parity usw.
benutzt, bekam ich nur die Antwort von ABBAKlaus und Fred, das ich
Float für das Stopbit benutzen muss. Das ist dann aber für die Preferences
und Comboboxen umständlich. In der MSDN wird aber ein Longwert in der API
genutzt, was vieles einfacher macht. Man braucht dann eben nicht die Werte,
sondern die Constanten in den Preference speichern. Naja, man muss sich
den Eigenarten in PB fügen, auch wenn nur teilweise von der API was übernommen
wird, aber bei Stop eine Ausnahme gemacht wird.

Theoretisch müsste bei dir dann folgende Zeile heißen:
StopBits = Valf(GetGadgetText(#ComboBox_25))
wenn du für StopBit den Wert 1.5 nutzen möchtest, falls erforderlich.
Bei 1 und 2 fällt es eben nicht auf.

Hier der Link zur MSDN wo es anders als in PB ist:
http://msdn.microsoft.com/en-us/library/aa450503.aspx

Im Source kann man sehen, das dort longs für die floatwerte benutzt werden.
PortDCB.StopBits = ONESTOPBIT; // 0,1,2 = 1, 1.5, 2

Hier nochmal der Link ins englische Forum, wo ich bezüglich des Stopbits nachgehakt hatte.
http://www.purebasic.fr/english/posting ... 6&p=379218
Da mein englisch nicht das Allerbeste ist, habe ich das hier nochmal aufgeführt.

Gruß,
Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Darie »

Danke Falko ! Den Bug hätte ich ohne deine Hilfe nicht gefunden :D

Hab auch direkt noch einen anderen Bug dadurch gefunden....

Mein Programm ist mittlerweile auch fertig, wenn du nochmal wegen des Handshakeprotokolls gucken möchtest, poste ich den
Quelltext und den Rest dazu... (ich muss nur noch was am Lizenztext ändern, dann kann ich das Programm hochladen...)

Danke nochmal !

Gruss

Alexander
Repeat
PureBasic
ForEver
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Darie »

http://www.file-upload.net/download-431 ... x.zip.html

Hier ist meine aktuelle Version von NC-Max V.0817 inkl. Quellcode. Eigentlich ist es zum Lesen und Senden von CNC-Programmen gedacht, aber wenn man das Editorfeld noch editierbar macht, könnte man damit auch schnell beliebige Stringabfolgen an den seriellen Port schicken....

Schönen Tag noch

Alexander
Repeat
PureBasic
ForEver
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: CNC-Programm über seriellen Port übertragen

Beitrag von Falko »

Danke Alexander!

Schöner Code. :allright:
Ich habe noch nie was mit dem Handshake gemacht,
aber nun sehe ich, wie es aufbaut sein muss und das man die
Steuerleitungen manuell setzten bzw. abfragen muss.

Ich dachte immer, das wäre automatisch, wenn man nur das Handshake vorgibt.

Man lernt nie aus :wink:

Gruß,
Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten