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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
/************* BIBIOTHEQUE *********************/
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <unistd.h>
/************* SORTIES ***********************/
#define EJECTION_PIECE 0x01 // bit 0
#define ASPIRATION_ONA 0x02 // bit 1
#define EXPULSION_VENTOUSE 0x04 // bit 2
#define BRAS_POSITION_MAGASINA 0x08 // bit 3
#define BRAS_POSITION_MODULE_CONTROLEA 0x10 // bit 4
/************* ENTREES ************************/
#define NON_DISPONIBLE 0x01 // bit 0 1 1
#define EJECTION_PIECE_RETRACTE 0x02 // bit 1 1 0
#define EJECTION_PIECE_AVANCE 0x04 // bit 2 0 1
#define ASPIRATION_ON 0x08 // bit 3 0 0
#define BRAS_POSITION_MAGASIN 0x10 // bit 4 0 0
#define BRAS_POSITION_MODULE_CONTROLE 0x20 // bit 5 0 0
#define RESERVE_PIECE_VIDE 0x40 // bit 6 1 0
#define ASPIRATION_OFF 0x80 // bit 7 1 1
SOCKET id_de_la_socket;
int nombre_de_caractere;
int nombre_de_caractere_recu ;
char buffer[50];
unsigned char sorties=0x00;
SOCKET configurationTCP(char ip[])
{
SOCKET id_de_la_socket;
WSADATA initialisation_win32; /// Variable pour récupérer la structure d'information sur l'initialisation
int erreur;
SOCKADDR_IN info_Trame; // la structure pour serveur
printf("programme client tcp\n");
erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
if (erreur!=0)
printf("\n impossible d'initialiser Winsock : %d %d",erreur,WSAGetLastError());
else
printf("\n WSAStartup réussi ");
// Ouverture d'une Socket
//id_de_la_socket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); /// Ouverture d'une Socket
id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
printf("id socket =%d\n",id_de_la_socket);
if (id_de_la_socket==INVALID_SOCKET)
printf("\n impossible de creer la socket : %d ",WSAGetLastError());
else
printf("\n socket valider \n ");
// OUVERTURE DE SESSION TCP
info_Trame.sin_family=AF_INET;
info_Trame.sin_addr.s_addr=inet_addr(ip);
info_Trame.sin_port = htons(502);
erreur=connect(id_de_la_socket,(struct sockaddr*)&info_Trame,sizeof(info_Trame));
if (erreur!=0)
printf("\n impossible d'ouvrir la session TCP : %d %d",erreur,WSAGetLastError());
else
printf("\n OUVERTURE DE SESSION TCP : OK \n ");
return id_de_la_socket;
}
void fermetureTCP(SOCKET id_de_la_socket)
{
int erreur;
erreur=shutdown(id_de_la_socket,2); // 2 signifie socket d'émission et d'écoute
if (erreur!=0)
printf("\n Desole, je ne peux pas fermer la session TCP du a l'erreur : %d %d",erreur,WSAGetLastError());
else
printf("\n Session TCP : Arreter \n ");
// FERMETURE DE LA SOCKET
erreur=closesocket(id_de_la_socket);
if (erreur!=0)
printf("\n Desole, je ne peux pas arreter la socket machine du a l'erreur : %d %d",erreur,WSAGetLastError());
else
printf("\n Socket machin : Arreter \n");
// Fermeture de WSAStartup
erreur=WSACleanup();
if (erreur!=0)
printf("\n Desole, je ne peux pas liberer winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
else
printf("\n WSACleanup : OK \n");
getchar();
}
void ecritureModbus(unsigned char donnees1, unsigned char donnees2)
{
unsigned char trameModbus[12]= {0x6c ,0x1f, 0x00, 0x00, 0x00, 0x06, 0xff, 0x06,0x9c,0x42};
trameModbus[10] = donnees1;
trameModbus[11] = donnees2;
nombre_de_caractere=send(id_de_la_socket,(unsigned char *)trameModbus,12,0);
if (nombre_de_caractere==SOCKET_ERROR)
printf("\nDesole, je n'ai pas envoyer les donnees du a l'erreur : %d",WSAGetLastError());
else
printf("\nsend trame : OK");
nombre_de_caractere_recu=recv(id_de_la_socket,buffer,12,0);
if (nombre_de_caractere_recu==SOCKET_ERROR)
printf("\n Desole, je n'ai pas recu de donnee de la trame ");
else
{
buffer[nombre_de_caractere_recu]=0;
printf("\n Voici les donnees de la trame : %s",buffer);
}
/* nombre_de_caractere_envoi=send(id_de_la_socket,trameModbus,strlen(trameModbus),0); // partie envois supoervisuer
if (nombre_de_caractere_envoi==SOCKET_ERROR)
printf("\nDesole, je n'ai pas envoyer les donnees du a l'erreur : %d",WSAGetLastError());
else
{
printf("\nsend donnee dams : OK : %d\n",nombre_de_caractere_envoi);
}
*/
}
/*unsigned char lectureModbus(unsigned char adresse, unsigned char donnees )
{
//unsigned char capteur []= {0x6a ,0x99, 0x00, 0x00, 0x00, 0x05, 0xff, 0x03};
//nombre_de_caractere_recu6=recv(id_de_la_socket,buffer6,01,0);
return 'c';
}
*/
int main()
{
id_de_la_socket=configurationTCP("127.0.0.1");
sorties=ASPIRATION_ONA^sorties;
ecritureModbus((unsigned char)0x00,(unsigned char)ASPIRATION_ONA);
sorties=EXPULSION_VENTOUSE^sorties;
ecritureModbus((unsigned char)0x00,(unsigned char)EXPULSION_VENTOUSE);
sorties=BRAS_POSITION_MAGASINA^sorties;
ecritureModbus((unsigned char)0x00,(unsigned char)BRAS_POSITION_MAGASINA);
fermetureTCP(id_de_la_socket);
return 0;
} |
Partager