Article View: de.org.ccc
Article #504Re: Suche Kartenzwerg Software
From: Jens-Erich Lange
Date: Thu, 18 Sep 1997 00:00
Date: Thu, 18 Sep 1997 00:00
164 lines
4975 bytes
4975 bytes
Michael Pahlenberg <Michael_Pahlenberg@bigfoot.com> schrieb im Beitrag
<01bcc9a6$ed64eda0$LocalHost@default>...
> Hallo, hat hier vielleicht einer `ne Ahnung, wo ich Software f=FCr =
meinen
> Kartenzwerg bekomme? Ich versuche mich gerade (wie so viele) im
> Telefonkarten editieren. Irgendwie ist die Sache gar nicht mal so
> einfach...=20
Die Firma TOWITOKO schrieb mir dazu folgendes:
Kartenzwerg I2C-Protokoll Random Read/Write
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
GRUNDLAGEN
Der Kartenzwerg arbeitet mit einer halbduplex-Uebertragung, d.h. es wird
wechselseitig nur in eine Richtung gesendet. Alle Uebertragungen werden =
vom
PC [oder vom Mac!, d. Setzer] initiiert.
Die vom PC gesendete Befehlsfolge kann mit einem Characterspacing von 0 =
bis
50ms gesendet werden. Die Antwort auf einen abgeschlossenen Datenblock =
wird
innerhalb von 0 bis 200ms gesendet (CWT < 50ms; BWT < 200ms).
In der folgenden Protokollbeschreibung werden jeweils die vom PC =
gesendeten Daten in runden Klammern (), die vom KartenZwerg gesendeten =
Daten in eckigen Klammern [] dargestellt.
(QS) kennzeichnet eine zu berechnende Quersumme. [nc] kennzeichnet einen =
Platzhalter der zur zuk=FCnftigen Nutzung reserviert ist.
Die Schnittstelle des PC muss auf 9600 bps (8N1) eingestellt sein, die =
RTS und DTR Leitungen muessen auf +12V liegen.
DIE QUERSUMMENBERECHNUNG
Die Quersummenberechnung startet mit dem Wert 00 hex. JEDES gesendete =
Byte wird nach dem folgenden Algorithmus in die Quersumme einbezogen:
Alte Quersumme Neuer Wert
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 B7 B6 B5 B4 B3 B2 B1 B0
-----------+----------- -----------------------
| |
+------------+------------+
|
XOR
|
+--X7 X6 X5 X4 X3 X2 X1 X0<-+
| |
+----------------------------
|
XOR 01hex
|
N7 N6 N5 N4 N3 N2 N1 N0
Neue Quersumme
Beachten Sie, dass der Wert X je um ein Bit nach links rotiert wird; Bit =
7 wird nach Bit 0 kopiert und invertiert.
[Anmerkung des Setzers: Die Quersummenbildung habe ich in Metrowerks =
Pascal folgendermassen geloest]
-------- schnipp ---------
=20
function QuerSumme (S: Str255): char;
var
i, j: integer;
begin
j :=3D 0;
for i :=3D 1 to length(S) do
begin
j :=3D BitXOr(j, integer(S[i]));
j :=3D BitShift(j, 1);
if BitTst(@j, 7) then BitSet(@j, 15);
j :=3D BitXOr(j, $01);
end;
QuerSumme :=3D char(j);
end;
-------- schnapp ---------
DIE BEFEHLSSEQUENZEN
Karte aktivieren
(60, 0F, 9C) [01]
Karte deaktivieren
(61, 0F, 98) [01]
I2C ab Adr. A lesen
Init Sequenz fuer I2C bis 16 kBit:
(7C, 64, 41, a1, a2, 64, 40, a3, 0F, QS) [01]
a1 :=3D Hi.A shl 1 or A0
a2 :=3D Lo.A
a3 :=3D a1 or 01
Init Sequenz fuer I2C 32/64 kBit:
(7C, 64, 42, A0, a1, a2, 64, 40, A1, 0F, QS) [01]
a1 :=3D Hi.A
a2 :=3D Lo.A
n Byte lesen
(10 or (n-1), QS) [d1...dn, QS]
mit N: 1...16 Bytes
I2C ab Adr. A schreiben
Init Sequenz fuer I2C bis 16 kBit:
(7C, 64, 41, A0, 00, 64, 40, A1, 0F, 36) [01]
(7E, 10, DA) [??, QS]
(7E, 66, 6E, a2, a1, pm, 0F, QS) [01]
a1 :=3D Hi.A shl 1 or A0
a2 :=3D Lo.A
pm gibt den Pagemode an, wobei folgender Zusammenhang gilt: (pm-1) =
Byte je Page
Init Sequenz fuer I2C bis 64 kBit:
(7C, 64, 42, A0, 00, 00, 64, 40, A1, 0F, 0B) [01]
(7E, 10, DA) [??, QS]
(7F, 66, 6E, a2, a1, A0, 0F, QS) [01]
a1 :=3D Hi.A
a2 :=3D Lo.A
Der Pagermodus ab 32 kBit ist auf 16 Byte voreingestellt.
n Datenbytes schreiben (das niederwertigste Byte des Adresszaehlers =
wird inkrementiert):
fuer n =3D 1..15 Bytes:
(40 or (n-1), d1...dn, 0F, QS) [01]
fuer n =3D 16 Bytes:
(4F,d1...dn, QS) [01]
Um das hoeherwertige Byte des Adresszaehlers zu setzen (auch bei =
fortlaufendem Beschreiben der Karte) wird die folgende Sequenz =
eingefuegt:
fuer I2C bis 16 kBit:
(7E, 66, 6E, a2, a1, pm, 0F, QS) [01]
fuer I2C 32/64 kBit:
(7F, 66, 6E, a2, a1, A0, 0F, QS) [01]
Technical Details
Message-ID:
<5vs54r$pdu$3@news02.btx.dtag.de>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<01bcc9a6$ed64eda0$LocalHost@default>Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: fd655,77bd86f1dce9a104 X-Google-Attributes: gidfd655,public X-Google-Thread: 103e79,77bd86f1dce9a104 X-Google-Attributes: gid103e79,public From: DYNAMO@t-online.de (Jens-Erich Lange) Subject: Re: Suche Kartenzwerg Software Date: 1997/09/18 Message-ID: <5vs54r$pdu$3@news02.btx.dtag.de> X-Deja-AN: 274282240 References: <01bcc9a6$ed64eda0$LocalHost@default> X-Sender: 04551967766-0001@t-online.de (Jens-Erich Lange) Organization: DYNAMO Software Newsgroups: de.org.ccc,fido.ger.ccc