Bonjour,
J'aimerais communiquer avec une caméra qui a besoin d'un login et d'un password pour me renvoyer des mesures.
Il faut utiliser un socket.
Je ne sais pas comment on envoie un login et un password.
Merci d'avance.
Version imprimable
Bonjour,
J'aimerais communiquer avec une caméra qui a besoin d'un login et d'un password pour me renvoyer des mesures.
Il faut utiliser un socket.
Je ne sais pas comment on envoie un login et un password.
Merci d'avance.
Bonjour,
je suppose que ta caméra a un protocole de communication,
tu utilise l'outil "SerialPort" pour communiquer avec?
PS: regarde dans la doc de la caméra si il n'y a pas des infos sur les trames à envoyer
non c'est une caméra cognex serie 5000,
Je communique avec un socket et la communication utilise un protocole telnet. Donc il faut envoyer "13" en ASCII à la caméra pour valider chaque commande mais ça ne fonctionne pas comme prévu: je récupérer juste le nom de la session.
Voici mon code:
J'ai encore en commentaire de l'ancien codeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 Private client As TcpClient Private buffer_receive() As Byte Private s_Adresse_IP As String Private i_port_ip As Int32 Private adr_ip As IPEndPoint Private ip_localAddr As IPAddress #Region "constructeur: @IP, N°Port" Sub New(ByVal IP As String, ByVal port As Integer) s_Adresse_IP = IP i_port_ip = port Try ip_localAddr = IPAddress.Parse(s_Adresse_IP) adr_ip = New System.Net.IPEndPoint(ip_localAddr, i_port_ip) client = New TcpClient() client.Client.ReceiveTimeout = 4000 Catch ex As Exception MessageBox.Show("Erreur instanciation caméra :" + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub #End Region #Region "Destructeur" Sub dispose() If Not client Is Nothing Then client = Nothing End If End Sub #End Region #Region "Lecture du DataMatrix" Function lire_DM(ByVal nb_entete As Integer, ByVal longueur As Integer, ByVal longueur_totale As Integer) As String Dim DM As String = "" Dim buffer() As Byte Try 'connexion client.Connect(ip_localAddr, i_port_ip) Catch ex As Exception 'message d'erreur MessageBox.Show("Erreur connexion caméra :" + ex.Message, "erreur", MessageBoxButtons.OK, MessageBoxIcon.Error) lire_DM = "erreur" Exit Function End Try Try '''''''''''''''''Mise en forme''''''''''''' ' Mise en forme du buffer à envoyer. Dernier caractère OU CR = 13(ASCII) 'buffer = System.Text.Encoding.ASCII.GetBytes("001001001") 'initialisation et codage en ASCII 'buffer = System.Text.Encoding.ASCII.GetBytes(CByte(Asc(Chr(13)))) 'buffer = System.Text.Encoding.ASCII.GetBytes("GVB031") 'initialisation et codage en ASCII 'ReDim Preserve buffer(buffer.Length) ' buffer(buffer.Length - 1) = CByte(Asc(Chr(13))) ''''''''''''''''Ecriture =>envoi''''''''''''''''''' 'Envoie des données à un System.Net.Sockets.Socket connecté. ' client.Client.Send(buffer) 'définit une valeur spécifiant la taille de la mémoire tampon 'de réception de System.Net.Sockets.Socket. client.Client.ReceiveBufferSize = longueur_totale '''''''''''''Lecture =>Réception'''''''''''''''''' ''''''''''''''''''''''''Session''''''''''''''''''' 'Reçoit les données d'un System.Net.Sockets.Socket lié 'dans la mémoire tampon de réception buffer_receive ReDim buffer_receive(longueur_totale) 'dimensionne le buffer client.Client.Receive(buffer_receive) 'déclare le buffer de réception buffer = System.Text.Encoding.ASCII.GetBytes("admin") 'envoie Username ReDim Preserve buffer(buffer.Length) buffer(buffer.Length - 1) = CByte(Asc(Chr(13))) client.Client.Send(buffer) DM = System.Text.Encoding.ASCII.GetString(buffer_receive, 0, 60) Catch ex As Exception End Try 'lecture du caractère de l'ensemble du string contenu dans la caméra, longueur: nbre octets à décoder 'DM = System.Text.Encoding.ASCII.GetString(buffer_receive, nb_entete, longueur) 'valeur à renvoyer lire_DM = DM client.Client.Close() client.Close() client = Nothing End Function #End Region End Class