Seite 2 von 6

Re: erste Schritte in Spin

Verfasst: Fr 14. Aug 2009, 16:22
von drohne235
XModem ist schon ziemlich urtümlich, hat aber Spaß gemacht den Code anzupassen und zu untersuchen und ist sicher auch ein guter Einstieg in die Problematik der Datenübertragung. Ich kenne das Protokoll noch aus Mailboxzeiten. Das mit den vermurksten Daten in der Textdatei kann man sicher beheben wenn man vor der Übertragung oder beim Schreiben den Puffer gleich löscht, aber die Skalierung auf 128 Byte ist eine Eigenart des Protokolls.

http://de.wikipedia.org/wiki/XModem

Re: erste Schritte in Spin

Verfasst: Fr 14. Aug 2009, 18:52
von Julian
Aber es muss doch die Möglichkeit geben das Problem zu lösen. Es gibt zwar ios.startram aber es nevt einfach immer die SD umzustecken. XLoad ist da einfach praktischer.

Re: erste Schritte in Spin

Verfasst: Fr 14. Aug 2009, 19:07
von drohne235
So eine richtige Lösung wäre wohl nur Y- oder Z-Modem-Protokoll (Dateinamen werden übertragen) und ein Hive-Commander, welchen man statt mit "nc" mit "hc" starte! ;)

Re: erste Schritte in Spin

Verfasst: Fr 14. Aug 2009, 19:25
von Julian
Naja aber das hat ja früher wohl auch funktioniert ohne das irgendwelcher Junk in die Daten geschrieben wurde. Man muss ja "nur" beim letzten Package nach dem EOF aufhören zu schreiben. Das Zeichen das übrigens "zu viel" geschrieben wird hat den HexCode 1A.

Re: erste Schritte in Spin

Verfasst: Fr 14. Aug 2009, 19:54
von drohne235
Hm, da hab ich jetzt einen Knoten im Hirn. Nach meiner Meinung geht es nur mit einer initilaen Übetragung der Dateilänge, denn ein bestimmter Hex-Code wie $1A kann ja nicht maßgeblich sein - solch ein Code kann ja in jeder Datei als integraler Bestandteil der Daten auftreten.

Re: erste Schritte in Spin

Verfasst: Fr 14. Aug 2009, 21:32
von Julian
So ich hab mal (mit meinen geringen Kenntnissen) einen Q'n'D Patch geschrieben. Das Problem ist natürlich, wenn sich in den letzten 128Byte der Datei ein 1A befindet. Wenn jemand ne besser Idee oder Verbesserungen hat bitte posten.

Re: erste Schritte in Spin

Verfasst: Fr 14. Aug 2009, 23:16
von Rainer
Habe einen Y-Modem Spin-Source gefunden. Der ist zwar nur gedacht zum Upload vom Propeller, aber sollte kein Problem sein das anzupassen.

"Here's a version of my Ymodem code that lets you upload recorded data as a file.
There are two test proceedures, one uploads data as a text file and the other uploads as a binary file..."


Im Source steht auch, das $1A wohl "DOS EOF" ist.

Ich hänge den Source mal an ... wer Lust hat kann sich ja mal damit beschäftigen .. ich habe im Moment keine Zeit dafür.

Gruß.
Rainer

Re: erste Schritte in Spin

Verfasst: Sa 15. Aug 2009, 10:06
von Julian
Danke für den Code. Ich habe eh nix zu tun. Der Code is zwar zum senden aber der Xmodem code ist ja schon funktionsfähig. Ich habe mal COM1 mit COM2 mit nem Nullmodem-Kabel verbunden und einfach mal Daten per ymodem versendet und geloggt. Das werde ich jetzt mal Analysieren und schaun ob ich den Xmodem code anpassen kann.

Re: erste Schritte in Spin

Verfasst: Sa 15. Aug 2009, 16:28
von Julian
Ok das ist doch nicht so einfach wie ich gedacht hab. Ich bin deshalb gerade dabei das ganze erstmal in Python zu schreiben. Zum einen weils einfacher zu debuggen ist und zum anderen weil ich das besser kann. Jedoch verstehe ich die CRC Routine nicht. Könnte die mir jemand erklären?

Code: Alles auswählen

PRI UpdateCRC(data,crc):newcrc|i,icrc
 'look here:http://web.mit.edu/6.115/www/miscfiles/amulet/amulet-help/xmodem.htm

  crc:=crc^(data<<8)
  repeat i from 0 to 7
    if crc&$8000
      crc:=((crc<<1)&$FFFF)^$1021
    else
      crc:=(crc<<=1)&$FFFF

  return crc&$FFFF
PS: Der C Code auf der Seite hilft mir auch nicht, da ich C noch weniger kann.

Re: erste Schritte in Spin

Verfasst: Sa 15. Aug 2009, 17:40
von DJLinux
Was verstehst Du denn an dem C code nicht?

Ist es vielleicht "^" das bedeutet XOR und sollte in Python auch "^" sein wenn ich mich nicht irre.

Vielleicht kannst Du ja etwas genauer sagen wo der Schuh drückt.

Grüsse Joshy