Toon posts:

[C#] Barcode scanner gegeven ophalen

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi,

Hier heb ik een Metrologic SP5500 Barcode Scanner staan. Dit is een draagbare scanner die je vervolgens via een cradle weer aan de computer hangt en kan je met eventuele bijgeleverde software de gegevens van die scanner afhalen. Maar die software is natuurlijk niet wat ik nodig heb. Waar ik mee bezig ben is iets te maken (liefst in C#) waar ik de gegevens kan ophalen van de scanner, en vervolgens in een MySQL database zetten. Nouwja zover zijn we nog niet eens.

Heb ondertussen wat verschillende software:
- Serial Moinitor Professional (trail) --> om te kijken wat er nou eigenlijk allemaal gebeurd over mijn Seriele kanaal
- Advanced Serial Port Monitor 3.5.3 --> hiermee kan ik handmatig strings doorvoeren naar de seriele port om zo gegevens binnen te halen.
- Visual C# 2005 Express Edition --> om mee te programmeren natuuk.

Stukje code
code:
1
2
3
4
5
6
serialPort1.BaudRate = 115200;
serialPort1.ReadTimeout = 1000;
SerialPort1.Open();
byte[] byteBuffer = new byte[1000];
//serialPort1.WriteLine(read);
serialPort1.Write("READ\r");

Als ik kijk in mijn Port monitor zie ik dat de port wordt geopend, en er wordt netjes het comando READ verstuurd. Maar ik kirjg geen response.

Wanneer ik via de Advance Port monitor handmatig de string READ invoer krijg ik direct een resultaat terug en ook gelijk de eerste barcode die in het apparaat staat. Vervolgens kan ik met ACK de andere barcode's net zo lang binnehalen totdat ik ze allemaal heb gehad.

Voorlopig ben ik nog niet echt veel verder gekomen met de C# code. Heb op MSDN gekeken naar de serialPort classe maar daar wordt ik ook niet veel duidelijker van. Heb het idee dat ik iets met serialPort1.Read() moet doen, maar die methode begrijp ik niet helemaal en krijg ik ook geen resultaten mee. Ergens heb ik het idee dat ik nog een soort van submit moet meesturen om een resultaat terug te krijgen, maar als ik naar de bits kijk die er worden verstuurd zijn die allebei gelijk (52 45 41 44 0D).

Verder op google gezocht maar nog niks echt gevonden, software die erbij wordt geleverd geeft geen mogelijkheid om informatie naar een database te versturen alleen maar naar een txt file. Heeft iemand enige tips voor mij? iemand die hier al mogelijk mee heeft gewerkt?

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Eens even kijken. Je opent de Seriele poort, je maakt een buffer aan (die niet gebruikt wordt), je verstuurd data. En vervolgens doe je niets. Misschien moet je ook eens ergens data gaan uitlezen.

Verwijderd

Topicstarter
De buffer die aangemaakt wordt staat er nog in van een experiment. Doet idd op dit moment niks. Ik begrijp idd dat ik data moet gaan uitlezen, maar ik krijg helemaal geen response van mijn scanner terug. Als ik via de handmatige command line READ invoer, krijg ik op mijn scanner al een melding te zien van : Versturen. Gebruik ik dus de read via m'n eigen gemaakte dingentje gebreurt er niks op de scanner zelf.. Blijft deze staan op: Even wachten.

Ik mis nog een handeling maar weet niet precies welke.

Twee plaatjes om het mogelijk duidelijker te maken:
http://koen.denheijer.com/Handmatig.JPG
http://koen.denheijer.com/script.JPG

Zoals je ziet is bij handmatig gelijk een read request (zonder dat ik daar verdere informatie invoer). terwijl ik met de script precies hetzelfde uitvoer (naar mijn idee) maar geen response terug krijg. Hoe kan ik die output controleren of opvangen?

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Is het commando "READ\r" wel de juiste? Wordt er niet een ander regeleinde verwacht?

Verwijderd

Topicstarter
Wanneer ik via command line READ invoer krijg ik in m'n monitor te zien
code:
1
2
3
4
5
6
7
8
9
10
Port opened by process "aspmon.exe" (PID: 2972)

Request: 21-3-2007 16:56:59.45364 (+1225.0415 seconds)

 52 45 41 44 0D                                    READ.           

Answer: 21-3-2007 16:56:59.45364 (+0.0000 seconds)

 41 43 4B 0D 00 52 4F 53 32 43 53 31 41 30 32 41   ACK..ROS2CS1A02A
 37 2C 31 65 03 0D                                 7,1e..


En doe ik het via mijn script krijg ik

code:
1
2
3
4
5
Port opened by process "TestAppSerial.vshost.exe" (PID: 2368)

Request: 21-3-2007 16:58:25.44964 (+85.4729 seconds)

 52 45 41 44 0D                                    READ.


De read komt overeen en heeft de zelfde verzendwaarden zover ik kan zien in m'n monitor.

  • /\/\|)
  • Registratie: Juli 2000
  • Laatst online: 21-11 12:02
Staat de handshake wel goed?

Verwijderd

Check naast de snelheid ook eens de parity, stopbit, flowcontrol en dat soort grappen. Het kan zijn dat de standaardwaarden die gebruikt worden in je code niet dezelfde zijn als die port monitor.

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 27-11 18:30
Check vooral de lampjes rechts onderin de monitor.

zeroxcool.net - curity.eu


  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

DIT BERICHT IS PREVENTIEF VERWIJDERD DOOR DE GEBRUIKER

[ Voor 96% gewijzigd door Ruudjah op 01-12-2009 22:04 ]

TweakBlog


  • MrNGm
  • Registratie: Augustus 2004
  • Laatst online: 05-11 16:22
Zo te zien doet dat script allemaal dingen die jij vergeet te doen in je programma. Kijk nog eens in beide screenshots naar het schermpje van Table View. Daar staat wat het script allemaal doet en laat en wat jouw progsel doet. Zoals zeroxcool zei, kijk naar de lampjes rechtsonderin. Bij het script is alleen CTS aan en bij het programma zijn RTS, CTS & DTR ingeschakeld.

Ofwel, terug naar de tekentafel. Eerst goed bestuderen wat het script doet en daarna zelf gaan fröbelen.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Ruudjah schreef op woensdag 21 maart 2007 @ 20:40:
Ook is het handig om met een aparte thread te werken, aangezien je software dan niet staat te wachten op input van een scanner welke soms nooit komt.
Je kunt zonder multithreaded te werken ook non blocking communiceren dus daarvoor hoef je het niet te doen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1