Jag håller på och brottas med ett problem i Visual Basic. Saken är den att jag ska från ett VB-program skriva en del uppgifter till en industriell bläckstråleskrivare, bl a i form av streckkod. Skrivaren är ansluten till PC:n via serieporten och det fungerar att med hjälp av skrivarens terminalprogram (som körs på samma PC) skriva ut motsvarande saker. Problemet ligger alltså i mitt VB-program. Jag använder mig av MSComm-modulen och de inställningar som behöver vara samma (efter vad jag vet) på skrivaren som i egenskaperna för MSComm i programmet (antal databitar, hastighet, paritet, osv) stämmer överens. Jag får ihop textsträngen som ska skickas (har kontrollerat variabelns innehåll i en textruta) så att den ser ut som den ska. Jag öppnar porten, lägger ut textsträngen (i form av en strängvariabel med hjälp av MSComm.Output) och avslutar med att stänga porten. Problemet är att det inte verkar skickas något från VB-programmet till skrivaren. Hej Vet inte om detta hjälper dig,men iallafall . Igen Hej Nillan.Skicka info via com-porten
Jag har aldrig tidigare använt MSComm i något VB-program (har helt enkelt aldrig behövt det tidigare) och missar av den orsaken säkert något väldigt grundläggande. Problemet är att jag inte hittar det i hjälpen eller i någon av de VB-böcker som jag har (de jag har är tyvärr alltför "basic" för detta, har någon förresten något tips på en bra bok som även tar upp dessa bitar?) och alla mina idéer om vad som kan vara felet börjar sina. I min desperation vänder jag mig därför hit med förhoppningen att någon har några bra och lysande idéerSv: Skicka info via com-porten
MSComm Control Example
The following simple example shows basic serial
communications using a modem:
Private Sub Form_Load ()
' Buffer to hold input string
Dim Instring As String
' Use COM1.
MSComm1.CommPort = 1
' 9600 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "9600,N,8,1"
' Tell the control to read entire buffer when Input
' is used.
MSComm1.InputLen = 0
' Open the port.
MSComm1.PortOpen = True
' Send the attention command to the modem.
MSComm1.Output = "ATV1Q0" & Chr$(13) ' Ensure that
' the modem responds with "OK".
' Wait for data to come back to the serial port.
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, "OK" & vbCRLF)
' Read the "OK" response data in the serial port.
' Close the serial port.
MSComm1.PortOpen = False
End Sub
mvh
SvenSv: Skicka info via com-porten
Du har ett bra exempel i din VB Samples Mapp (tror jag)
Sök på Vbterm.vbp
DSSv: Skicka info via com-porten
Några tips till dig.
1. Tag reda på om det du skall skicka till skrivaren måste följa ett
visst protokoll. Om så är fallet måste du följa det till fullo annars
funkar det inte. Oftast finns ett protokoll. Man kan inte skicka enbart
godtycklig text. (Antar att du använder en zebra-skrivare).
2. Annars gör du bara följande så skall det funka
Sample Code =====================================
MSComm1.CommPort = 1
MSComm1.Settings = "19200,N,8,1"
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
MSComm1.Output = "Sträng att skicka"
While MSComm1.OutBufferCount
DoEvents
Wend
MSComm1.PortOpen = False
Else
MsgBox "Porten redan öppen av ett annat program", vbOKOnly + vbInformation
End If
Sample Code =====================================
3. Ofta måste man avsluta sina strängar med en LF chr(10) eller
en CR chr(13) eller båda. Kolla i specifikationen för skrivaren
vilket format den kräver.
/peterh