Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięJak to zrobić?
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Cześć wszystkim.
mam taki problem.proc:m16.
Odczyt znaków ze skanera barkodu za pomocą Input.
Problem w tym że nie zawsze skaner odczyta, i w tym momencie program robi zwis.
Jak to obejść?
Pozdrawiam.
mam taki problem.proc:m16.
Odczyt znaków ze skanera barkodu za pomocą Input.
Problem w tym że nie zawsze skaner odczyta, i w tym momencie program robi zwis.
Jak to obejść?
Pozdrawiam.
Ja najczęściej używam SKK 3800. Link poniżej.
Tyle, że jakie to ma znaczenie? Jest CR na samym końcu. Nie lepiej zrobić Ci to Ischarwaiting()? Bo wg mnie zdecydowanie lepiej. I do tego nie blokuje Ci programu. Zresztą Input też możesz sparametryzować.
Dla 100% pewności, w skanerach SKK ustawiam sobie Preffix i Suffix. Np. Typowe chr(2) i chr(3) Przychodzi skan chr(2) + odczyt + chr(3)
Ale najczęściej wystarczy CR.
http://www.skk.com.pl/kody_kreskowe/pro ... 00_it3800/
Pozdrawiam
Tyle, że jakie to ma znaczenie? Jest CR na samym końcu. Nie lepiej zrobić Ci to Ischarwaiting()? Bo wg mnie zdecydowanie lepiej. I do tego nie blokuje Ci programu. Zresztą Input też możesz sparametryzować.
Dla 100% pewności, w skanerach SKK ustawiam sobie Preffix i Suffix. Np. Typowe chr(2) i chr(3) Przychodzi skan chr(2) + odczyt + chr(3)
Ale najczęściej wystarczy CR.
http://www.skk.com.pl/kody_kreskowe/pro ... 00_it3800/
Pozdrawiam
Problem może pojawić się w momencie, gdy na drodze skaner -> Twoja elektronika nastąpi jakieś zakłócenie - zabraknie jakiejś części komunikatu, zwłaszcza końcowej,
W tej sytuacji do tego komunikatu doklei się kolejny, który zostanie potraktowany jako cały na podstawie znaku CR na samym końcu.
Zwróć uwagę, czy jest to samo chr(13) czy poprzedza go wcześnie chr(10), tzw. line feed.
W najprostszej procedurze, z oczekiwaniem chr(13):
W kodzie mogą być drobne literówki, bo pisałem go on-line.
Warunki możesz stawiać najróżniejsze np. loop until a=13
Jeśli stosujesz Watchdoga, to musisz przemyśleć procedurę. Ta jest najprostsza z możliwych.
W obecnej, jeśli zabraknie chr(13), na pewno zadziała Watchdog, po program na skutek braku końca komunikatu nie będzie w stanie wyjść z pętli
Pzdr
W tej sytuacji do tego komunikatu doklei się kolejny, który zostanie potraktowany jako cały na podstawie znaku CR na samym końcu.
Zwróć uwagę, czy jest to samo chr(13) czy poprzedza go wcześnie chr(10), tzw. line feed.
W najprostszej procedurze, z oczekiwaniem chr(13):
Kod: Zaznacz cały
Dim znak As String * 1
Dim skaner As String * 32
Dim a As Byte
Config Serialin = Buffered , Size = 32
$baud=9600
Echo Off
Enable Interrupts
Do
If Ischarwaiting() <> 0 Then
skaner=""
Do
A = Inkey()
Select Case A
Case 32 to 127 'Podstawowe znaki
znak=Chr(a)
skaner=skaner+znak
Case 13 'Koniec komunikatu
Exit Do
End Select
Loop
End If
Loop
Warunki możesz stawiać najróżniejsze np. loop until a=13
Jeśli stosujesz Watchdoga, to musisz przemyśleć procedurę. Ta jest najprostsza z możliwych.
W obecnej, jeśli zabraknie chr(13), na pewno zadziała Watchdog, po program na skutek braku końca komunikatu nie będzie w stanie wyjść z pętli
Pzdr
Że tak pozwolę sobie zapytać z czystej ciekawości - czyżbyś kontynuował projekt z taśmą transportową na który jakiś czas temu próbowałeś otworzyć zlecenie?
O ile dobrze pamiętam chciałeś wspierać się tam plikami tekstowymi. Rozumiem, że odczytywał je będzie mikrokontroler albo PC komunikujący się z mikrokontrolerem.
Jeśli plik będzie obsługiwany przez dwa programy i będzie puchnął, to nie widzę tego
Są zdecydowanie lepsze i szybsze rozwiązania
Pzdr
O ile dobrze pamiętam chciałeś wspierać się tam plikami tekstowymi. Rozumiem, że odczytywał je będzie mikrokontroler albo PC komunikujący się z mikrokontrolerem.
Jeśli plik będzie obsługiwany przez dwa programy i będzie puchnął, to nie widzę tego
Są zdecydowanie lepsze i szybsze rozwiązania
Pzdr
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 83 gości