Avatar billede taio Novice
24. september 2002 - 15:54 Der er 32 kommentarer og
2 løsninger

Sende kode til serielport

Hej alle.

Jeg sidder med en lille opgave. Jeg skal åbne en pengeskuffe via en printer som sidder i serielporten.
--Neden under ses lidt info fra producenter af printer--
"Program Example for all printers"
PRINT #1, CHR$(&H1B);"p";CHR$(0);CHR$(25);CHR$(250);

[Format] ASCII= ESC p m t1 t2
Hex= 1B 70 m t1 t2
Decimal= 27 112 m t1 t2
[Range]
m = 0, 1, 48, 49
0 ≤ t1 ≤ 255
0 ≤ t2 ≤ 255

Hvem kan hjælpe? Det er noget med at sende en kode fra en knap i en formular, hvor der er en kode til serielporten. Ellers skal jeg udskrive en rapport som ikke kommer fysisk ud.

\\Taio
Avatar billede sjap Praktikant
24. september 2002 - 16:46 #1
Taio

Prøv selv at kigge lidt på

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q148857

Der findes noget kode til hvordan man skriver til en com-port - det skal bare lige hives ud af modem-sammenhængen. Måske kan det bruges. (jeg kunne godt gøre det, men har ikke tid nok lige p.t.)
Avatar billede taio Novice
24. september 2002 - 21:20 #2
Er der slet ikke nogle som kan hjælpe?? Jeg har fundet frem til at jeg skal sende en kode i decimal til com1 som er følgende "27 112 0 25 250"
eller ASCII kode som er følgende ESC + P;0;24;250

Hjææælp
Avatar billede sjap Praktikant
24. september 2002 - 21:36 #3
Nu aner jeg jo ikke, hvad der var galt med mit første svar (udover at det selvfølgelig ikke var en færdig løsning), men her så en anden mulighed, som er et rent gæt fra min side. Hvad med at skrive koderne i en tekstfil og så kopiere tekstfilen til porten (det var måden vi gjorde det på, dengang der stadig var noget der hed DOS). :-)
Avatar billede sjap Praktikant
24. september 2002 - 21:43 #4
Alternativt forslag:

Hvis

PRINT #1, CHR$(&H1B);"p";CHR$(0);CHR$(25);CHR$(250);

er en DOS kommando, kan du lægge den ind i en batchfil og så kopiere denne fil til porten.
Avatar billede taio Novice
24. september 2002 - 23:03 #5
Hvordan gør man det?? Kan man ikke bare lave en kode i vba under en formular som sender koden til com1???

Jeg har ikke ret meget forstand på noget af det, så hvis du kan uddybe dig lidt bedre, ville det være en stor hjælp.
Avatar billede sjap Praktikant
25. september 2002 - 09:17 #6
taio

Jo, men det kræver åbenbart et lille udsnit at det som jeg henviste til i mit afviste svar. Det vil selvfølgelig være den mest elegante løsning, men den kræver nok lidt mere tid end jeg har lige nu.

Hvis du vil forsøge med batchfilen, vil jeg anbefale dig først at lave batchfilen og så manuelt forsøge at kopiere den til COM porten - bare for at se om det virker. Hvis det ikke virker, er det forslag jo ikke anvendeligt.
Avatar billede terry Ekspert
25. september 2002 - 20:50 #7
hi taio, these two lines
"Program Example for all printers"
PRINT #1, CHR$(&H1B);"p";CHR$(0);CHR$(25);CHR$(250);

are these supposed to get sent to the printer (com port) and it opens the cash register?

Does the "bon" printer and cash register work together?
Avatar billede terry Ekspert
25. september 2002 - 20:51 #8
whats all this

[Format] ASCII= ESC p m t1 t2
Hex= 1B 70 m t1 t2
Decimal= 27 112 m t1 t2
[Range]
m = 0, 1, 48, 49
0 ≤ t1 ≤ 255
0 ≤ t2 ≤ 255

does this also have to get sent to the port?
Avatar billede taio Novice
25. september 2002 - 21:35 #9
Dette er hvad producenten mener at der skal bruges. Hvis koden er Decimal skal følgende sendes til printeren 27 112 0 24 250, kan dette lade sig gøre??
Avatar billede terry Ekspert
26. september 2002 - 13:25 #10
Hi Taio
Try adding the MS COMM control to your formand re-name it to ComPort

Then try this code

omPort.CommPort = 2      ' Select Com2
ComPort.PortOpen = True  ' Open the port (will fail if already in use)
' All further code will fail if port fails to open
ComPort.Output = Chr(27) & Chr(112) & Chr(0) & Chr(24) & Chr(250) '27 112 0 24 250

ComPort.PortOpen = False ' Close the port
Avatar billede terry Ekspert
26. september 2002 - 13:25 #11
Firts line should be
ComPort.CommPort = 2      ' Select Com2
Avatar billede taio Novice
26. september 2002 - 13:39 #12
Skal der ikke stå noget først? i toppen?

Der opstår en kompileringsfejl når jeg prøver at kompilere
Avatar billede terry Ekspert
26. september 2002 - 13:42 #13
Have you added the control and renamed the object? Place the code in the buttons On click event
works here, although I dont have a printer on the port.
Avatar billede taio Novice
26. september 2002 - 13:48 #14
Jeg er ikke helt med hvad du mener her...

"Try adding the MS COMM control to your formand re-name it to ComPort"

Skal jeg lave en komandoknap og omdøbe den til comport?? derefter skal jeg skrive/kopier koden i under "ved klik" på komandoknappen. Har jeg gjort, kommer med en fejl.
Avatar billede terry Ekspert
26. september 2002 - 13:53 #15
in the tool box you will find Microsoft Communications Control, add one of these to your form and then re-name it to ComPort so that the example can work.
Avatar billede taio Novice
26. september 2002 - 14:09 #16
Terry=> Jeg kan ikke finde den funktion under værktøjslinjen. Kan den hedde noget andet? jeg bruger access97 dansk ver.

Kan jeg kontakte dig på tlf.?
Mit er 75925538
Avatar billede terry Ekspert
26. september 2002 - 14:26 #17
Shi. I have a feeling that that control is part of VB and NOT Access. It will be available to Access if its installed on the PC.

I'm at work at the moment, maybe I can find some other way, maybe I can phone you later.
Avatar billede terry Ekspert
26. september 2002 - 14:31 #18
If we cant get this to work then I can get a DLL made to do the job, but lets see if we can manage without that first.
Avatar billede taio Novice
26. september 2002 - 14:50 #19
ok, tak
Avatar billede fynbohans Nybegynder
26. september 2002 - 15:44 #20
DLL'erne ligger i Windows\System32.
I Visual Basic modulet i Access  klik på Tools - References - Browse og de kommer frem.
Er spændt på om i får det til at virke!
Avatar billede taio Novice
26. september 2002 - 18:32 #21
fynbohans => Hvad hedder det under reference, dansk ver. access97???
Avatar billede terry Ekspert
26. september 2002 - 20:31 #22
is is called mscomm32.ocx but I VERY MUCH doubt you will find it! It is included with VB Prof and NOT Access!
Avatar billede terry Ekspert
26. september 2002 - 20:46 #23
taio>It is also possible to do this using the win32 API but trying to fathom out what is neccessary is a mouth full, so I have asked my brother to put something together in C (DLL).
Lets C what he comes up with!
Avatar billede taio Novice
26. september 2002 - 22:02 #24
ok terry
Avatar billede fynbohans Nybegynder
27. september 2002 - 10:44 #25
Glemte at skrive at det var i Access2000.
Og hvor DLL'erne ligger afhænger også at Windows-versionen.
Avatar billede terry Ekspert
27. september 2002 - 10:51 #26
I have Access XP Developer Edition and this isnt included. What is the name of the componenet (DLL/OCX) you are refreing to?
Avatar billede fynbohans Nybegynder
27. september 2002 - 10:55 #27
Og endnu en kommentar.
Langt oppe i teksten står com1, men i Terrys kode står =Com2.
Måske er det slet i nødvendigt at kende porten, hvis det der skal printes fra er
sat som Standardprinter.
Og måske skal hele teksten, også [Format] og [Range] sendes til printeren.
Avatar billede terry Ekspert
27. september 2002 - 11:05 #28
fynbohans, have you read the comment 10:51:04?
Avatar billede fynbohans Nybegynder
27. september 2002 - 20:39 #29
Under Tools - Browse så jeg filen COMTL32.OCX.
Gætter det er den der under Indsæt - AvtiveX hedder Microsoft Comm Control.
Men det kunne være interessant med lidt flere detaljer om den
Pengeskuffe. Hvordan er den f.eks.installeret?
Avatar billede taio Novice
27. september 2002 - 20:45 #30
Pengeskuffen er tilkoblet en bonprinter med RJ45 stik. Via printeren åbner skuffen når den rigtige frekvens sendes ud. Jeg kan godt få åbnet skuffen ved at printe og sende en Controlkode med printet. Det jeg ønsker er at åbne skuffen uden at printe. Håber at det er nok info. Printeren sidder på COM1
Avatar billede fynbohans Nybegynder
27. september 2002 - 21:08 #31
Kender ikke meget til Visual Basic, men har brugt PowerBasic i
mange år, så jeg har netop prøvet følgende:

Open "LPT1:" For Output As #1
Print #1, "Jeg er en pengeskuffe"
Close #1

- og det virkede. Ud af printen kom et stykke papir med den
rigtige tekst, så hvis Taio prøver

Open "COM1:" For Output As #1
Print #1, Chr(27) & Chr(112) & Chr(0) & Chr(24) & Chr(250)
Close #1

virker det måske.
Det eneste du skal være opmærksom på at der ikke findes en
åben fil med filnr.1. - Men det er der nok ikke.
Avatar billede terry Ekspert
28. september 2002 - 10:06 #32
hi fynbohans>that code looks promising! I was thinking on those lines myslef, but didnt know if it was (and still dont) possible to open a printer in place of a file. I will have to  try that, much easier than making a DLL.
Avatar billede terry Ekspert
29. september 2002 - 09:44 #33
taio>have you tried fynbohans' answer? If it works then it may be a better idea than having to include DLL's in your set-up!
Avatar billede taio Novice
29. september 2002 - 10:11 #34
Tak begge to, det som fynbohans har forslået, virker SQ. Mange tak for jeres hjælp.

Den glade Taio
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester