-1

I am trying to communicate with the syringe pump from PC through rs232.

I want to send a string "02DC;50803" to the pump for establishing the communication and pump should reply "C".

I am using MSComm1.Output="02DC;50803" to send the command and Text1.Text=Text1.Text+MSComm1.Input for receiving. When MSComm1.Output executes I am able to see a LED blinking on the end device but there is no reply using MSComm1.input.

Please help me out with this problem and if I put these instruction under MSComm() control, it seems to be dead.

Jason Aller
  • 3,541
  • 28
  • 38
  • 38

2 Answers2

0

There could be a number of problems here.

For example:

  • your cable could be broken
  • your serial port may not be functioning - I see that a lot
  • Your command is malformed
  • the pump simply doesn't expect to reply to the command you are sending

Those last 2 might be unlikely, the pump will probably reply to everything you fire at it - all the ones I have here sure answer back.

Really need a lot more information to help you.

  • What make/model pump?
  • Manual for the pump so that your commands can be checked.
  • Have you connected to the pump with an existing software package? - if there is one.

P.S. My software won't support your pump; I don't recognize those commands.

Jason Aller
  • 3,541
  • 28
  • 38
  • 38
SyringePumpPro
  • 246
  • 1
  • 5
0

To continue the list from timb:

  • Are you using the correct baudrate?
  • What are the settings of .RThreshold and .SThreshold?
  • Are the other comport settings correct (usually N,8,1 but there are exceptions)?
  • Did you try the command using hyperterminal and get the expected reply?
  • Where in your code do you read MSComm1.Input? in Which event?
  • Does the device have a led as well which blinks it is when sending data? does it blink?
  • Does the command need an end-char like vbCrLf or vbCr of anything else?

Please post the complete code of the function/sub where you send the command, and please post the complete code of the function/sub where you read MSCOmm1.Input

Have a look at the following testproject in which I send the "AT" command to my modem which is connected to commport 1 and with which I communicate at baudrate 9600:

'1 form with:
'  1 textbox control : name=Text1
'  1 command button  : name=Command1
'  1 MSComm control  : name=MSComm1
Option Explicit

Private Sub Command1_Click()
  MSComm1.Output = "at" & vbCrLf
End Sub

Private Sub Form_Load()
  With MSComm1
    If .PortOpen Then .PortOpen = False
    .Settings = "9600,n,8,1"
    .CommPort = 1
    .RThreshold = 1 'read data per char
    .SThreshold = 0 'send all data at once
    .PortOpen = True
  End With 'MSComm1
End Sub

Private Sub Form_Resize()
  Dim sngWidth As Single
  Dim sngCmdHeight As Single
  Dim sngTxtHeight As Single
  sngWidth = ScaleWidth
  sngCmdHeight = 315
  sngTxtHeight = ScaleHeight - sngCmdHeight
  Text1.Move 0, 0, sngWidth, sngTxtHeight
  Command1.Move 0, sngTxtHeight, sngWidth, sngCmdHeight
End Sub

Private Sub MSComm1_OnComm()
  Dim strData As String
  With MSComm1
    Select Case .CommEvent
      Case comEvReceive
        strData = .Input
        ShowData strData
    End Select
  End With 'MSComm1
End Sub

Private Sub ShowData(strData As String)
  With Text1
    .SelStart = Len(.Text)
    .SelText = strData
  End With 'Text1
End Sub

When I click on Command1 it will send "AT" & vbCrLf and the modem replies with "OK" which is shown in Text1.

Hrqls
  • 2,944
  • 4
  • 34
  • 54