da kannst Du natürlich Recht haben, das Feld habe ich mal schlicht „ignoriert“ :eek:
mit einem Sync Zeichen funktioniert es auch mit „feste Schritte“-Einstellung im Cutter …
… „kaum macht man es richtig, schon funktioniert es“
die spannende Frage ist natürlich, welches Sync Zeichen hier richtig und sinnvoll ist? Da ja verschiedene Schlüssel bzw. RFID-Strings eingelesen werden sollen …
naja - es kommt von 3 verschiedenen Schlüssel immer ein „01“ als erstes Hex von insgesamt 5 Stellen. (ein 0A oder ein 0D kommt nicht …)
Damit (Cutter auf Sync Zeichen „01“ eingestellt) funktioniert es einwandfrei. Ich weiß allerdings nicht, ob das Zufall ist oder ob der Leser die „01“ davor sendet (was natürlich mein Problem lösen würde")
also auf jeden Fall - vielen Dank für Eure Unterstützung (und überhaupt für den Tipp mit dem preiswerten RFID-Leser)
01 könnte für SOH ( Beginn der Kopfzeile) stehen.
Dann macht das etwas mehr Sinn.
4Byte sind auch gebräuchlicher als Dateninformation als Fünf.
Eventuell noch ein 02 oder 03 dabei ? (STX/ETX)
Michael
Hallo Liebe Mitglieder,
ich bin dabei wie hier beschrieben ein RFID Lesesystem zu realisieren.
Den Aufbau der Scripts verstehe ich (danke Helmut) und sollte sie auch einbinden können.
Bevor ich anfange wild drauf los zu löten möchte ich eine zweite Meinung hören.
Folgende Hardware:
RFID Ausseneinheit mit folgender Belegung (siehe auch die Bilder)
Rot = VCC 12V
Schwarz = GND
Grün = RX
Weiss = TX
Blau = LED (wird erstmal nicht benötigt)
Gelb = Summer (wird erstmal nicht benötigt)
Einfacher USB Seriell Adapter
Serielles Kabel
Da ich über USB ja nur 5V bekomme würde ich für die Stromversorgung ein externes 12 V Netzteil verwenden.
So würde ich es belegen:
VCC 12V (Rot) - externes Netzteil Plus
GND (Schwarz) - externes Netzteil Minus
RX (Grün) - An Pin 2 vom Seriellen Adapter
TX (Weiss) - An Pin 3 vom Seriellen Adapter
Liege ich richtig oder habe ich einen Denkfehler? Danke für die Infos!
Dem Pin 5 vom SuB D Stecker würde ich noch den GND gönnen
Du könntest auch noch mit einem StepUp Wandler von 5Volt auf 12Volt gehen. Ist wohl eher ein optisches Problem, aber ein extra Netzteil ist eigentlich to much, er braucht ja gar nicht so viel Strom, oder?
Gruß Helmut
Hier noch ein WEMOS Script zur Anbindung des seriellen RFID Kartenlesers über einen Client Socket.
SSID und Passwort muss man noch anpassen, der serielle Ausgang geht an den RX-PortPin des Wemos.
Die IP Adresse wird über den Wemos ser. Port (der gleiche seriellen Port, wie der für die Programmierung), bei Verbindungs-Erfolg, ausgegeben.
#include <ESP8266WiFi.h>
#define MAX_SRV_CLIENTS 3
const char* ssid = "SSID";
const char* password = "PASSWORT";
WiFiServer server(23);
WiFiClient serverClients[MAX_SRV_CLIENTS];
void setup() {
Serial.begin(9600);
//test debug Seriel war Serial1
//Serial1.setDebugOutput(true);
delay(50); // Entprellung
WiFi.begin(ssid, password);
delay(100); // Entprellung
Serial.print("
Connecting to "); Serial.println(ssid);
uint8_t i = 0;
while (WiFi.status() != WL_CONNECTED && i++ < 20) delay(500);
if(i == 21){
Serial.print("Could not connect to"); Serial.println(ssid);
while(1) delay(500);
}
Serial.begin(9600);
server.begin();
server.setNoDelay(true);
// Serial war Serial1
Serial.print("Ready! Use 'telnet ");
Serial.print(WiFi.localIP());
Serial.println(" Port 23 to connect");
}
void loop() {
uint8_t i;
if (server.hasClient()){
for(i = 0; i < MAX_SRV_CLIENTS; i++){
if (!serverClients[i] || !serverClients[i].connected()){
if(serverClients[i]) serverClients[i].stop();
serverClients[i] = server.available();
continue;
}
}
//no free spot
WiFiClient serverClient = server.available();
serverClient.stop();
}
for(i = 0; i < MAX_SRV_CLIENTS; i++){
if (serverClients[i] && serverClients[i].connected()){
if(serverClients[i].available()){
while(serverClients[i].available()) Serial.write(serverClients[i].read());
//you can reply to the client here
}
}
}
if(Serial.available()){
size_t len = Serial.available();
uint8_t sbuf[len];
Serial.readBytes(sbuf, len);
//bello is a broadcast to all clients
for(i = 0; i < MAX_SRV_CLIENTS; i++){
if (serverClients[i] && serverClients[i].connected()){
serverClients[i].write(sbuf, len);
delay(1);
}
}
}
}
Die Daten dann vom Client Server über Cutter (übergeordnet ist der Client Socket) und per Registervariable (übergeordnete Instanz Cutter) einem Auswertescript zuführen.
Alles so, wie wenn es direkt über RS232 kommt
Gruß Helmut