Outils pour utilisateurs

Outils du site


sockets

—–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

pics divers

qt

sockets.txt · Dernière modification: 2010/12/22 14:52 par bvandepo