-----thèmes à aborder----- 1 socket par emission ou reception... indépendant du média notion client/serveur adresses+port comparaison TCP/UDP aborder les fonctions bloquantes/non bloquantes (ligne 172 de socket.cpp) quel équivalent sur pic? Normalement on lance un processus par connexion, donc on peut utiliser les fonctions bloquantes sans pb sur PC. -----manips à faire----- dans les 2 cas, la carte recoit des commandes pour allumer les leds envoie des infos sur l'état des poussoirs ---client/serveur udp sur le pic--- dans un premier temps, pic est juste client et envoie infos sur poussoir puis on ajoute le serveur, pour recevoir commandes led ---serveur TCP sur le pic pour avoir hyperterminal--- format des commandes en texte pour piloter depuis hyperterminal ---Montage des manips--- faire un serveur TCP avec la classe socket, il y a tout ce qu'il faut (bind, listen etc...) et s'y connecter en TCP avec le pic desactiver le dhcp sur le pic pour ne pas que l'adresse change et donc que le bind aussi voir les fichiers sources dans: C:\Microchip Solutions v2010-10-19\Microchip\TCPIP Stack il y a également un fichier d'aide windows C:\Microchip Solutions v2010-10-19\Microchip\Help regler l'ip fixe au debut de l'application pic, et pas dans un .h -----infos----- protocole TCP, explications sur les ports etc: http://fr.wikipedia.org/wiki/Transmission_Control_Protocol winsock 2, c'est la nouvelle version, il me manque des types http://msdn.microsoft.com/en-us/library/ms740673%28VS.85%29.aspx appli basique: http://msdn.microsoft.com/en-us/library/ms737629%28v=VS.85%29.aspx exemple linux: http://www.experts-exchange.com/Programming/System/Linux/Q_20878532.html super exemple de classe pour sockets windows http://www.adp-gmbh.ch/win/misc/sockets.html requette http: http://www.commentcamarche.net/contents/internet/http.php3 http://www.siteduzero.com/tutoriel-3-35613-les-requetes-http.html http://www.emse.fr/~mbeig/COURS/SOCKET2001/socket.html bonnes explications, dessins etc, s'en inspirer: http://www.commentcamarche.net/contents/sockets/sockfonc.php3 cours sur les sockets: http://www.irisa.fr/prive/bcousin/Cours/06-socket.fm.pdf conversion de projets vers winsock: http://cs.baylor.edu/~donahoo/practical/CSockets/winsock.html http://www.sockets.com/winsock.htm MICROCHIP: mal= librairies http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en537041 j'ai installé la version 2010-10-19. prend 400Mo sur hd regarder le fichier TCPIP Stack Help.chm installé dans C:\Microchip Solutions v2010-10-19\Microchip\Help ethernet MAC (Media Access Control) intégré au pic32 ethernet PHY (physique) déporté http://fr.wikipedia.org/wiki/Ethernet ===différences par rapport à liaison serie=== partage du médium donc plusieurs connexions identification par adresse ouverture de comm et fermeture de comm ===projet pic32 eth demo=== pour connaitre l'ip attribuée à la carte par dhcp, positionner un breakpoint a la ligne DisplayIPValue() et faire un watch sur AppConfig.MyIPAddr. Les octets sont dans val, en ordre totalement inversé equivalent à inet_addr : StringToIPAddress() functions. il y a 3 projets différents: ==1== vieux téléchargé pour le kit de dev, tout doit etre compilé, c'est lui que j'ai essayé de modifier en changeant le Index.htm: C:\Microchip Starter Kits\PIC32 Starter Kits\Ethernet - TCPIP-BSD - HTTP Server Demo accessible par: http://192.168.1.100/Index.htm Ip fixe configurée dans tcpip_bsd_config.h pour passer en dhcp, Project->build options->Compiler-> changer DEMO_USE_DHCP en =1 ET FORCER REBUILD ALL .. CA NE MARCHE PAS, il repete en boucle DHCPTask(); ==2 : c'est sur lui que je travaille le +== plus récent avec précompilation de pas mal de chose, c'est celui la que j'ai modifié pour voir l'ip: C:\Documents and Settings\MAC\Bureau\manip_pic32\TCPIP Demo App - PIC32ETHSTK v3 Bertrand voir TCPIP Demo App - PIC32ETHSTK v3 Bertrand client UDP fonctionnel.rar, j'établie une comm udp avec un serveur l'ip du pic est reglée fixe en 192.168.1.100 static SOCKET bsdUdpClient; //bvdp int addrlen = sizeof(struct sockaddr_in); static struct sockaddr_in udpaddr; char chaine[100]; unsigned int res; unsigned int compteur=0; bsdUdpClient = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); //bvdp if(bsdUdpClient == INVALID_SOCKET) return; sprintf(chaine,"compteur= %6d\n",compteur); udpaddr.sin_port =27015; udpaddr.sin_addr.S_un.S_addr =0x0b01a8c0; //192.168.1.11 res=sendto(bsdUdpClient, (const char*)chaine, 18, 0, (struct sockaddr*)&udpaddr, addrlen); if(res>0) { //pas bon } closesocket(bsdUdpClient); sur le sony, faire tourner le programme socket serveur udp qui affiche la valeur du compteur sur le mac, il y a le programme socket client qui fait comme le pic probleme: ne n'arrive pas a désactiver le dhcp client et serveur, même en commentant ces lignes dans TCPIPConfig.h, donc je n'arrive pas à faire fonctionner avec 1 seul cable vers le mac simplement #define STACK_USE_AUTO_IP // Dynamic link-layer IP address automatic configuration protocol #define STACK_USE_DHCP_CLIENT // Dynamic Host Configuration Protocol client for obtaining IP address and other parameters #define STACK_USE_DHCP_SERVER // Single host DHCP server en dhcp sur le mac ethernet, j'obtiens les adresses: pic: 169.254.163.229 mac: 169.254.29.52 Je modifie la redirection de ports vers la machine virtuelle: http://blog.bayles.fr/post/2009/03/05/VirtualBox-c-est-genial VBoxManage setextradata "windows B" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 27015 VBoxManage setextradata "windows B" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 27015 VBoxManage setextradata "windows B" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" UDP pour voir les reglages: VBoxManage getextradata "windows B" enumerate REDEMARER le guest pour que les reglages soient pris en compte ==3== le plus récent, chargé avec le dernier map, je n'arrive pas à le compiler: C:\Microchip Solutions v2010-10-19\TCPIP Demo App\ === mode debug pour les programmes=== C:\Program Files\Microchip\MPLAB C32 Suite\pic32-libs\debugsupport\appio C:\Program Files\Microchip\MPLAB C32 Suite\pic32-libs\include\sys =====com avec pc===== utiliser hyperterminal ou telnet geahjgilaehgealghaegieahg =====virtualbox===== sur machine virtuelle, 127.0.0.1 = ip locale de la machine virtuelle, pas de l'hote ===== javascripts===== http://www.toutjavascript.com/reference/index.php http://www.comptechdoc.org/independent/web/cgi/javamanual/javafunctions.html http://en.wikipedia.org/wiki/JavaScript_syntax http://ljouanneau.com/softs/javascript/tooltip.php =====pics divers===== http://www.aix-mrs.iufm.fr/formations/filieres/ge/data/PIC/PICC/indexPIC_C.htm =====qt===== http://www.infres.enst.fr/~elc/qt/IntroQt/qt.html