Autor Beitrag
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: Mo 13.07.09 15:50 
Hier Beispielcode mit Testwerten und -Ausgabe. Man beachte das die CRC-Werte als word ausgegeben werden, in den Originaldaten sind sie als Einzelbytes (Low/High) gegeben:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
program t_x25;

{$ifdef win32}
  {$apptype console}
{$endif}

{Testprogramm für <http://www.delphi-forum.de/viewtopic.php?t=93594>}
{Benutzt Units aus: <http://home.netsurf.de/wolfgang.ehrhardt/crc_hash_2009-06-06.zip>}

uses
  mem_util,crcmodel,crcm_cat;

const
  tvs: array[1..18of string = (
        '4B1317000000000000000000',
        '4B1317000200000001000000',
        '4B1317000200000002000000',
        '4B1317000200000003000000',
        '4B1317000200000004000000',
        '4B1317000200000005000000',
        '4B1317000200000006000000',
        '4B1317000200000007000000',
        '4B1317000200000008000000',
        '4B1317000200000009000000',
        '4B131700020000000A000000',
        '4B131700020000000B000000',
        '4B131700020000000C000000',
        '4B131700020000000D000000',
        '4B131700020000000E000000',
        '4B131700020000000F000000',
        '4B1317000200000010000000',
        '4B1317000200000011000000');

var
  ctx: TCRC_ctx;
  crc: longint;
  buf: array[0..100of byte;
  i,L: word;
begin
  cm_Create(CRC16_X25,nil,ctx);
  for i:=1 to 18 do begin
    Hex2Mem(tvs[i], @buf, sizeof(buf), L);
    cm_Full(ctx, CRC, @buf, L);
    writeln(ctx.name,'(',HexStr(@buf, L),')=$',HexWord(CRC));
  end;
end.


Ausgabe:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
CRC-16/X-25(4b1317000000000000000000)=$23ed
CRC-16/X-25(4b1317000200000001000000)=$3439
CRC-16/X-25(4b1317000200000002000000)=$11f4
CRC-16/X-25(4b1317000200000003000000)=$0d4f
CRC-16/X-25(4b1317000200000004000000)=$5a6e
CRC-16/X-25(4b1317000200000005000000)=$46d5
CRC-16/X-25(4b1317000200000006000000)=$6318
CRC-16/X-25(4b1317000200000007000000)=$7fa3
CRC-16/X-25(4b1317000200000008000000)=$cd5a
CRC-16/X-25(4b1317000200000009000000)=$d1e1
CRC-16/X-25(4b131700020000000a000000)=$f42c
CRC-16/X-25(4b131700020000000b000000)=$e897
CRC-16/X-25(4b131700020000000c000000)=$bfb6
CRC-16/X-25(4b131700020000000d000000)=$a30d
CRC-16/X-25(4b131700020000000e000000)=$86c0
CRC-16/X-25(4b131700020000000f000000)=$9a7b
CRC-16/X-25(4b1317000200000010000000)=$eb23
CRC-16/X-25(4b1317000200000011000000)=$f798


Gammatester
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Mo 13.07.09 15:50 
user profile iconGammatester hat folgendes geschrieben Zum zitierten Posting springen:
Und was soll die Unit uCrc hier? Die crc16-Funktionen sind doch 'CRC-16/ZMODEM'. Beispielsweise liefert Deine Unit den Wert $66DC für den ersten Datensatz (statt $23ED)!

Gammatester


Hast recht. Hab nicht richtig geguckt. Sorry.
oOXTCOo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: Mo 13.07.09 23:38 
ach super, danke!

ich werde das gleich morgen testen, bin leider bis jetzt noch nicht dazu gekommen...

danke danke danke! :)
oOXTCOo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: So 19.07.09 20:22 
user profile iconGammatester hat folgendes geschrieben Zum zitierten Posting springen:
Hier Beispielcode mit Testwerten und -Ausgabe. Man beachte das die CRC-Werte als word ausgegeben werden, in den Originaldaten sind sie als Einzelbytes (Low/High) gegeben:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
program t_x25;

{$ifdef win32}
  {$apptype console}
{$endif}

{Testprogramm für <http://www.delphi-forum.de/viewtopic.php?t=93594>}
{Benutzt Units aus: <http://home.netsurf.de/wolfgang.ehrhardt/crc_hash_2009-06-06.zip>}

uses
  mem_util,crcmodel,crcm_cat;

const
  tvs: array[1..18of string = (
        '4B1317000000000000000000',
        '4B1317000200000001000000',
        '4B1317000200000002000000',
        '4B1317000200000003000000',
        '4B1317000200000004000000',
        '4B1317000200000005000000',
        '4B1317000200000006000000',
        '4B1317000200000007000000',
        '4B1317000200000008000000',
        '4B1317000200000009000000',
        '4B131700020000000A000000',
        '4B131700020000000B000000',
        '4B131700020000000C000000',
        '4B131700020000000D000000',
        '4B131700020000000E000000',
        '4B131700020000000F000000',
        '4B1317000200000010000000',
        '4B1317000200000011000000');

var
  ctx: TCRC_ctx;
  crc: longint;
  buf: array[0..100of byte;
  i,L: word;
begin
  cm_Create(CRC16_X25,nil,ctx);
  for i:=1 to 18 do begin
    Hex2Mem(tvs[i], @buf, sizeof(buf), L);
    cm_Full(ctx, CRC, @buf, L);
    writeln(ctx.name,'(',HexStr(@buf, L),')=$',HexWord(CRC));
  end;
end.


Ausgabe:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
CRC-16/X-25(4b1317000000000000000000)=$23ed
CRC-16/X-25(4b1317000200000001000000)=$3439
CRC-16/X-25(4b1317000200000002000000)=$11f4
CRC-16/X-25(4b1317000200000003000000)=$0d4f
CRC-16/X-25(4b1317000200000004000000)=$5a6e
CRC-16/X-25(4b1317000200000005000000)=$46d5
CRC-16/X-25(4b1317000200000006000000)=$6318
CRC-16/X-25(4b1317000200000007000000)=$7fa3
CRC-16/X-25(4b1317000200000008000000)=$cd5a
CRC-16/X-25(4b1317000200000009000000)=$d1e1
CRC-16/X-25(4b131700020000000a000000)=$f42c
CRC-16/X-25(4b131700020000000b000000)=$e897
CRC-16/X-25(4b131700020000000c000000)=$bfb6
CRC-16/X-25(4b131700020000000d000000)=$a30d
CRC-16/X-25(4b131700020000000e000000)=$86c0
CRC-16/X-25(4b131700020000000f000000)=$9a7b
CRC-16/X-25(4b1317000200000010000000)=$eb23
CRC-16/X-25(4b1317000200000011000000)=$f798


Gammatester



ich bekomm da immer eine fehlermeldung (messagebox) "I/O error 105" was mache ich falsch?
oOXTCOo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: So 19.07.09 21:20 
okay, super es funktioniert!!!

23ed
3439
11f4
0d4f
5a6e
46d5
6318
7fa3
cd5a
d1e1
f42c
e897
bfb6
a30d
86c0
9a7b
eb23
f798


DANKE!
oOXTCOo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: So 19.07.09 22:19 
sorry doppelposts...

mir ist noch aufgefallen das die crc endsumme vertauscht werden muss...

so sieht nun mein fertiges ergebnis aus:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
4B1317000000000000000000ED237E
4B131700020000000100000039347E
4B1317000200000002000000f4117E
4B13170002000000030000004f0d7E
4B13170002000000040000006e5a7E
4B1317000200000005000000d5467E
4B131700020000000600000018637E
4B1317000200000007000000a37f7E
4B13170002000000080000005acd7E
4B1317000200000009000000e1d17E
4B131700020000000A0000002cf47E
4B131700020000000B00000097e87E
4B131700020000000C000000b6bf7E
4B131700020000000D0000000da37E
4B131700020000000E000000c0867E
4B131700020000000F0000007b9a7E
4B131700020000001000000023eb7E
4B131700020000001100000098f77E
4B131700020000001200000055d27E
4B1317000200000013000000eece7E
4B1317000200000014000000cf997E
4B131700020000001500000074857E
4B1317000200000016000000b9a07E
4B131700020000001700000002bc7E
4B1317000200000018000000fb0e7E
4B131700020000001900000040127E
4B131700020000001A0000008d377E
4B131700020000001B000000362b7E
4B131700020000001C000000177c7E
4B131700020000001D000000ac607E
4B131700020000001E00000061457E
4B131700020000001F000000da597E
4B1317000200000020000000d1a77E
4B13170002000000210000006abb7E
4B1317000200000022000000a79e7E
4B13170002000000230000001c827E
4B13170002000000240000003dd57E
4B131700020000002500000086c97E
4B13170002000000260000004bec7E
4B1317000200000027000000f0f07E
4B131700020000002800000009427E
4B1317000200000029000000b25e7E
4B131700020000002A0000007f7b7E
4B131700020000002B000000c4677E
4B131700020000002C000000e5307E
4B131700020000002D0000005e2c7E
4B131700020000002E00000093097E
4B131700020000002F00000028157E
4B131700020000003000000070647E
4B1317000200000031000000cb787E
4B1317000200000032000000065d7E
4B1317000200000033000000bd417E
4B13170002000000340000009c167E
4B1317000200000035000000270a7E
4B1317000200000036000000ea2f7E
4B131700020000003700000051337E
4B1317000200000038000000a8817E
4B1317000200000039000000139d7E
4B131700020000003A000000deb87E
4B131700020000003B00000065a47E
4B131700020000003C00000044f37E
4B131700020000003D000000ffef7E
4B131700020000003E00000032ca7E
4B131700020000003F00000089d67E
4B1317000200000040000000353e7E
4B13170002000000410000008e227E
4B131700020000004200000043077E
4B1317000200000043000000f81b7E
4B1317000200000044000000d94c7E
4B131700020000004500000062507E
4B1317000200000046000000af757E
4B131700020000004700000014697E
4B1317000200000048000000eddb7E
4B131700020000004900000056c77E
4B131700020000004A0000009be27E
4B131700020000004B00000020fe7E
4B131700020000004C00000001a97E
4B131700020000004D000000bab57E
4B131700020000004E00000077907E
4B131700020000004F000000cc8c7E
4B131700020000005000000094fd7E
4B13170002000000510000002fe17E
4B1317000200000052000000e2c47E
4B131700020000005300000059d87E
4B1317000200000054000000788f7E
4B1317000200000055000000c3937E
4B13170002000000560000000eb67E
4B1317000200000057000000b5aa7E
4B13170002000000580000004c187E
4B1317000200000059000000f7047E
4B131700020000005A0000003a217E
4B131700020000005B000000813d7E
4B131700020000005C000000a06a7E
4B131700020000005D0000001b767E
4B131700020000005E000000d6537E
4B131700020000005F0000006d4f7E
4B131700020000006000000066b17E
4B1317000200000061000000ddad7E
4B131700020000006200000010887E
4B1317000200000063000000ab947E
4B13170002000000640000008ac37E
4B131700020000006500000031df7E
4B1317000200000066000000fcfa7E
4B131700020000006700000047e67E
4B1317000200000068000000be547E
4B131700020000006900000005487E
4B131700020000006A000000c86d7E
4B131700020000006B00000073717E
4B131700020000006C00000052267E
4B131700020000006D000000e93a7E
4B131700020000006E000000241f7E
4B131700020000006F0000009f037E
4B1317000200000070000000c7727E
4B13170002000000710000007c6e7E
4B1317000200000072000000b14b7E
4B13170002000000730000000a577E
4B13170002000000740000002b007E
4B1317000200000075000000901c7E
4B13170002000000760000005d397E
4B1317000200000077000000e6257E
4B13170002000000780000001f977E
4B1317000200000079000000a48b7E
4B131700020000007A00000069ae7E
4B131700020000007B000000d2b27E
4B131700020000007C000000f3e57E
4B131700020000007D00000048f97E
4B131700020000007E00000085dc7E
4B131700020000007F0000003ec07E
4B1317000200000080000000ec057E
4B131700020000008100000057197E
4B13170002000000820000009a3c7E
4B131700020000008300000021207E
4B131700020000008400000000777E
4B1317000200000085000000bb6b7E
4B1317000200000086000000764e7E
4B1317000200000087000000cd527E
4B131700020000008800000034e07E
4B13170002000000890000008ffc7E
4B131700020000008A00000042d97E
4B131700020000008B000000f9c57E
4B131700020000008C000000d8927E
4B131700020000008D000000638e7E
4B131700020000008E000000aeab7E
4B131700020000008F00000015b77E
4B13170002000000900000004dc67E
4B1317000200000091000000f6da7E
4B13170002000000920000003bff7E
4B131700020000009300000080e37E
4B1317000200000094000000a1b47E
4B13170002000000950000001aa87E
4B1317000200000096000000d78d7E
4B13170002000000970000006c917E
4B131700020000009800000095237E
4B13170002000000990000002e3f7E
4B131700020000009A000000e31a7E
4B131700020000009B00000058067E
4B131700020000009C00000079517E
4B131700020000009D000000c24d7E
4B131700020000009E0000000f687E
4B131700020000009F000000b4747E
4B13170002000000A0000000bf8a7E
4B13170002000000A100000004967E
4B13170002000000A2000000c9b37E
4B13170002000000A300000072af7E
4B13170002000000A400000053f87E
4B13170002000000A5000000e8e47E
4B13170002000000A600000025c17E
4B13170002000000A70000009edd7E
4B13170002000000A8000000676f7E
4B13170002000000A9000000dc737E
4B13170002000000AA00000011567E
4B13170002000000AB000000aa4a7E
4B13170002000000AC0000008b1d7E
4B13170002000000AD00000030017E
4B13170002000000AE000000fd247E
4B13170002000000AF00000046387E
4B13170002000000B00000001e497E
4B13170002000000B1000000a5557E
4B13170002000000B200000068707E
4B13170002000000B3000000d36c7E
4B13170002000000B4000000f23b7E
4B13170002000000B500000049277E
4B13170002000000B600000084027E
4B13170002000000B70000003f1e7E
4B13170002000000B8000000c6ac7E
4B13170002000000B90000007db07E
4B13170002000000BA000000b0957E
4B13170002000000BB0000000b897E
4B13170002000000BC0000002ade7E
4B13170002000000BD00000091c27E
4B13170002000000BE0000005ce77E
4B13170002000000BF000000e7fb7E
4B13170002000000C00000005b137E
4B13170002000000C1000000e00f7E
4B13170002000000C20000002d2a7E
4B13170002000000C300000096367E
4B13170002000000C4000000b7617E
4B13170002000000C50000000c7d7E
4B13170002000000C6000000c1587E
4B13170002000000C70000007a447E
4B13170002000000C800000083f67E
4B13170002000000C900000038ea7E
4B13170002000000CA000000f5cf7E
4B13170002000000CB0000004ed37E
4B13170002000000CC0000006f847E
4B13170002000000CD000000d4987E
4B13170002000000CE00000019bd7E
4B13170002000000CF000000a2a17E
4B13170002000000D0000000fad07E
4B13170002000000D100000041cc7E
4B13170002000000D20000008ce97E
4B13170002000000D300000037f57E
4B13170002000000D400000016a27E
4B13170002000000D5000000adbe7E
4B13170002000000D6000000609b7E
4B13170002000000D7000000db877E
4B13170002000000D800000022357E
4B13170002000000D900000099297E
4B13170002000000DA000000540c7E
4B13170002000000DB000000ef107E
4B13170002000000DC000000ce477E
4B13170002000000DD000000755b7E
4B13170002000000DE000000b87e7E
4B13170002000000DF00000003627E
4B13170002000000E0000000089c7E
4B13170002000000E1000000b3807E
4B13170002000000E20000007ea57E
4B13170002000000E3000000c5b97E
4B13170002000000E4000000e4ee7E
4B13170002000000E50000005ff27E
4B13170002000000E600000092d77E
4B13170002000000E700000029cb7E
4B13170002000000E8000000d0797E
4B13170002000000E90000006b657E
4B13170002000000EA000000a6407E
4B13170002000000EB0000001d5c7E
4B13170002000000EC0000003c0b7E
4B13170002000000ED00000087177E
4B13170002000000EE0000004a327E
4B13170002000000EF000000f12e7E
4B13170002000000F0000000a95f7E
4B13170002000000F100000012437E
4B13170002000000F2000000df667E
4B13170002000000F3000000647a7E
4B13170002000000F4000000452d7E
4B13170002000000F5000000fe317E
4B13170002000000F600000033147E
4B13170002000000F700000088087E
4B13170002000000F800000071ba7E
4B13170002000000F9000000caa67E
4B13170002000000FA00000007837E
4B13170002000000FB000000bc9f7E
4B13170002000000FC0000009dc87E
4B13170002000000FD00000026d47E
4B13170002000000FE000000ebf17E
4B13170002000000FF00000050ed7E
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: So 19.07.09 22:47 
Das liegt daran, daß in den Daten die 16-Bit-Werte als einzelne Bytes dargestellt werden. Bei Ausgabe als Word sieht es so aus, als wenn die Bytes verdreht sind. Bei Delphi/Windows gilt Little-Endian, Du kannst deshalb die Bytes von CRC einzeln mit (CRC and $FF) und (CRC shr 8 and $FF) oder lo(CRC) und hi(CRC).

Gammatester
oOXTCOo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: Mo 20.07.09 10:58 
user profile iconGammatester hat folgendes geschrieben Zum zitierten Posting springen:
Das liegt daran, daß in den Daten die 16-Bit-Werte als einzelne Bytes dargestellt werden. Bei Ausgabe als Word sieht es so aus, als wenn die Bytes verdreht sind. Bei Delphi/Windows gilt Little-Endian, Du kannst deshalb die Bytes von CRC einzeln mit (CRC and $FF) und (CRC shr 8 and $FF) oder lo(CRC) und hi(CRC).

Gammatester


achso, dann ists klar.
ich habs jetzt einfach so gelöst das ich es als word ausgeben lasse und dann einfach vertausche und wieder als word ausgebe.

danke.