telnet to Cognex In-Sight 4001 camera

C

chris.annin

Hello, ive been struggling with this for a couple weeks now and was hopingsomeone might be able to help. I have an older Cognex camera that I need to communicate with via telnet. I can get a response from the camera when I initiate a telnet session but I dont seem to get any response when I write the user name to the camera - I havnt been able to get any response writing anything. Im using python 2.7 and windows xp. here is the code:
Code:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\telnetlib.py", line 319,
return self.read_very_lazy()
File "C:\Python27\lib\telnetlib.py", line 395,
raise EOFError, 'telnet connection closed'
EOFError: telnet connection closed[\code]

if i do a read_all instead of read_until for user I just get "..." returned..  Im assuming tn.write command isnt working?  any help would be greatly appreciated.

thank you

Chris
 
M

MRAB

Hello, ive been struggling with this for a couple weeks now and was hoping someone might be able to help. I have an older Cognex camera that I need to communicate with via telnet. I can get a response from the camera when I initiate a telnet session but I dont seem to get any response when I write the user name to the camera - I havnt been able to get any response writing anything. Im using python 2.7 and windows xp. here is the code:
Code:
"Welcome to In-Sight(R) 4001 Session 1\r\nUser:"[/QUOTE]

The returned string ends with "User:", presumably the prompt to enter
the username, which makes we wonder whether you should be reading until
"User:" instead of until "Login: ".

Should you be ending that with just "\r" or just "\n" instead? (That
would be equivalent to typing the username and then pressing the Return
key.)

Haven't you already seen "User: "?
[QUOTE]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\telnetlib.py", line 319,
return self.read_very_lazy()
File "C:\Python27\lib\telnetlib.py", line 395,
raise EOFError, 'telnet connection closed'
EOFError: telnet connection closed[\code]

if i do a read_all instead of read_until for user I just get "..." returned.  Im assuming tn.write command isnt working?  any help would be greatly appreciated.
[/QUOTE]
 
C

chris.annin

Hello, ive been struggling with this for a couple weeks now and was hoping someone might be able to help. I have an older Cognex camera that I need to communicate with via telnet. I can get a response from the camera when I initiate a telnet session but I dont seem to get any response when I write the user name to the camera - I havnt been able to get any response writing anything. Im using python 2.7 and windows xp. here is the code:
Code:
[/QUOTE]
[QUOTE]
import sys 
import telnetlib 
HOST = "10.31.18.21" 
USER = "admin" 
tn = telnetlib.Telnet(HOST) 
tn.read_until("Login: ")[/QUOTE][/QUOTE]
[QUOTE]
"Welcome to In-Sight(R) 4001 Session 1\r\nUser:"[/QUOTE]



The returned string ends with "User:", presumably the prompt to enter

the username, which makes we wonder whether you should be reading until

"User:" instead of until "Login: ".





Should you be ending that with just "\r" or just "\n" instead? (That

would be equivalent to typing the username and then pressing the Return

key.)





Haven't you already seen "User: "?


[QUOTE]
Traceback (most recent call last):[/QUOTE]
[QUOTE]
File "", line 1, in [/QUOTE]
[QUOTE]
File "C:\Python27\lib\telnetlib.py", line 319,[/QUOTE]
[QUOTE]
return self.read_very_lazy()[/QUOTE]
[QUOTE]
File "C:\Python27\lib\telnetlib.py", line 395,[/QUOTE]
[QUOTE]
raise EOFError, 'telnet connection closed'[/QUOTE]
[QUOTE]
EOFError: telnet connection closed [QUOTE]
[\code][/QUOTE]

if i do a read_all instead of read_until for user I just get "..." returned.  Im assuming tn.write command isnt working?  any help would be greatly appreciated.[/QUOTE]
[/QUOTE]

yea you are right I shouldnt be doing read_until("User: ") I tried read_until("Password: ") instead but didnt make any difference.  If I use read_all() I just get ,,, like there is nothing to read.  in hyperterminal I had to set the “Send Line Ends with Line Feeds” option for it to work.  I thought by using "\r\n" would emulate the same thing?
 
C

chris.annin

Hello, ive been struggling with this for a couple weeks now and was hoping someone might be able to help. I have an older Cognex camera that I need to communicate with via telnet. I can get a response from the camera when I initiate a telnet session but I dont seem to get any response when I write the user name to the camera - I havnt been able to get any response writing anything. Im using python 2.7 and windows xp. here is the code:
Code:
[/QUOTE]
[QUOTE]
import sys 
import telnetlib 
HOST = "10.31.18.21" 
USER = "admin" 
tn = telnetlib.Telnet(HOST) 
tn.read_until("Login: ")[/QUOTE][/QUOTE]
[QUOTE]
"Welcome to In-Sight(R) 4001 Session 1\r\nUser:"[/QUOTE]



The returned string ends with "User:", presumably the prompt to enter

the username, which makes we wonder whether you should be reading until

"User:" instead of until "Login: ".





Should you be ending that with just "\r" or just "\n" instead? (That

would be equivalent to typing the username and then pressing the Return

key.)





Haven't you already seen "User: "?


[QUOTE]
Traceback (most recent call last):[/QUOTE]
[QUOTE]
File "", line 1, in [/QUOTE]
[QUOTE]
File "C:\Python27\lib\telnetlib.py", line 319,[/QUOTE]
[QUOTE]
return self.read_very_lazy()[/QUOTE]
[QUOTE]
File "C:\Python27\lib\telnetlib.py", line 395,[/QUOTE]
[QUOTE]
raise EOFError, 'telnet connection closed'[/QUOTE]
[QUOTE]
EOFError: telnet connection closed [QUOTE]
[\code][/QUOTE]

if i do a read_all instead of read_until for user I just get "..." returned.  Im assuming tn.write command isnt working?  any help would be greatly appreciated.[/QUOTE]
[/QUOTE]

yea you are right I shouldnt be doing read_until("User: ") I tried read_until("Password: ") instead but didnt make any difference.  If I use read_all() I just get ,,, like there is nothing to read.  in hyperterminal I had to set the “Send Line Ends with Line Feeds” option for it to work.  I thought by using "\r\n" would emulate the same thing?
 
C

chris.annin

Hello, ive been struggling with this for a couple weeks now and was hoping someone might be able to help. I have an older Cognex camera that I need to communicate with via telnet. I can get a response from the camera when I initiate a telnet session but I dont seem to get any response when I write the user name to the camera - I havnt been able to get any response writing anything. Im using python 2.7 and windows xp. here is the code:

Code:
"Welcome to In-Sight(R) 4001 Session 1\r\nUser:"

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "C:\Python27\lib\telnetlib.py", line 319,

return self.read_very_lazy()

File "C:\Python27\lib\telnetlib.py", line 395,

raise EOFError, 'telnet connection closed'

EOFError: telnet connection closed

[\code]



if i do a read_all instead of read_until for user I just get "..." returned.  Im assuming tn.write command isnt working?  any help would be greatly appreciated.



thank you



Chris[/QUOTE]

After much goofing around I figured out that every time I read from this Cognex 4000 series camera the connection either goes dead or disconnects.  IfI simply stop trying to read_until or read_all and just write everything it works fine.  here is what worked for me:

import sys
import telnetlib
host = "10.31.18.21"
tn = telnetlib.Telnet(host)
tn.write("admin\r\n") #the user name is admin
tn.write("\r\n") #there is no password - just return - now logged in
tn.write("SO0\r\n") #"SO"=cognex "set online" therefore "SO0" = camera offline
tn.write("LFsomevisionjob.job\r\n") #"LF" = cognex native command "load file"
tn.write("SO1\r\n") #"SO"=cognex "set online" therefore "SO1" = camera online
tn.close()

I doubt anyone has a camera this old they are trying to telnet to in pythonbut if so maybe this thread will help someone out.

thanks again for all your replies - really appreciate you guys helping me out.
Chris
 
R

Roy Smith

Two suggestions I can make.

One is to use the command-line telnet utility to talk to the camera.
Verify that you can at least make a connection and authenticate that way.

Second, use a packet sniffer to watch the actual traffic going back and
forth to the camera. On a Unix box, I would do:

$ tcpdump -s 0 -A host 10.31.18.21

but it looks like you're on windows, so you'll want to use Wireshark
(http://www.wireshark.org/) instead of tcpdump. If you're not familiar
with TCP protocol details, you'll want to read up on it so you can
properly interpret what tcpdump or Wireshark is telling you.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top