Hallo liebe Forumsgemeinde,
ich stehe vor einem Problem bei dem ich schon mehrere Tage nicht mehr
vorankomme. Ich benutze ein MSP-EXP430FG4618 in Kombination mit einem
CC3000 TI WiFi Modul:
http://processors.wiki.ti.com/index.php/CC3000_Wi-Fi_MSP-EXP430FG4618
Ich benutze eine dafür vorgesehene Bibliothek, und eine Anwendung davon
die so genannte basic_wifi_application.c
Das Hauptproblem ist, dass ich es nicht schaffe mit der Bibliothek eine
Verbindung mit einem Hot Spot meines Handy aufzubauen.
Ich rufe die Funktion mit '2' über das HTerm zuerst den folgenden
Befehl:
1 | case UART_COMMAND_CC3000_CONNECT:
| 2 | rs232_printf("\n\n0x32 angekommen\n\n");
| 3 | // rs232_printf("\n\nStartSmartConfig, aktiviert\n\n");
| 4 | // StartSmartConfig();
| 5 | ulSsidLen=0x04;
| 6 | pcSsid = "wxyz";
| 7 | // ulSsidLen = atoc(usBuffer[2]);
| 8 | // pcSsid = &usBuffer[3];
| 9 |
| 10 | rs232_printf("Wert von wlan_connect == %d", wlan_connect(0, (char *) pcSsid, ulSsidLen, NULL, NULL, 0));
| 11 |
| 12 | // wlan_connect(0, (char *) pcSsid, ulSsidLen, NULL, NULL, 0);
| 13 | break;
|
Damit sage ich dem Modul mit welchem Netz es sich verbinden soll.
Danach gebe ich "8c0a82bd2c0a82b01" ein
Dieser steht äquivalent zu:
192.168.43.210
192.168.43.01
Wenn ich nun den Befehl eingebe (siehe Anhang), dann komme ich zwar in
das Case Statement, aber ich sehe nicht, dass sich das Modul ins Netz
einloggt. Mein Notebook ist ebenfalls im Hot Spot Netz und ich lasse das
Wireshark laufen. Leider zeigt es mir die IP Adresse des Moduls nicht an
wenn ich den Befehl ausführe/debugge. Daher gehe ich davon aus, dass der
Verbindungsaufbau nicht stattgefunden hat.
1 | case UART_COMMAND_IP_CONFIG:
| 2 | rs232_printf("\n\n0x38 angekommen\n\n");
| 3 | //
| 4 | // Network mask is assumed to be 255.255.255.0
| 5 | //
| 6 | pucSubnetMask[0] = 0xFF;
| 7 | pucSubnetMask[1] = 0xFF;
| 8 | pucSubnetMask[2] = 0xFF;
| 9 | pucSubnetMask[3] = 0x0;
| 10 |
| 11 | pucIP_Addr[0] = ascii_to_char(usBuffer[2], usBuffer[3]);
| 12 | pucIP_Addr[1] = ascii_to_char(usBuffer[4], usBuffer[5]);
| 13 | pucIP_Addr[2] = ascii_to_char(usBuffer[6], usBuffer[7]);
| 14 | pucIP_Addr[3] = ascii_to_char(usBuffer[8], usBuffer[9]);
| 15 |
| 16 | pucIP_DefaultGWAddr[0] = ascii_to_char(usBuffer[10], usBuffer[11]);
| 17 | pucIP_DefaultGWAddr[1] = ascii_to_char(usBuffer[12], usBuffer[13]);
| 18 | pucIP_DefaultGWAddr[2] = ascii_to_char(usBuffer[14], usBuffer[15]);
| 19 | pucIP_DefaultGWAddr[3] = ascii_to_char(usBuffer[16], usBuffer[17]);
| 20 | //
| 21 | // Currently no implementation of DHCP in hte demo
| 22 | //
| 23 | pucDNS[0] = 0;
| 24 | pucDNS[1] = 0;
| 25 | pucDNS[2] = 0;
| 26 | pucDNS[3] = 0;
| 27 |
| 28 | rs232_printf("String == %s\n", usBuffer);
| 29 |
| 30 | netapp_dhcp((unsigned long *) pucIP_Addr,
| 31 | (unsigned long *) pucSubnetMask,
| 32 | (unsigned long *) pucIP_DefaultGWAddr,
| 33 | (unsigned long *) pucDNS);
| 34 |
| 35 | break;
| 36 | //
| 37 | // Handle WLAN disconnect command
| 38 | //
| 39 | case UART_COMMAND_CC3000_DISCONNECT:
| 40 | rs232_printf("\n\n0x39 angekommen\n\nwlan_disconnect\n");
| 41 | wlan_disconnect();
| 42 | break;
|
Woran könnte das liegen? Ich lasse bewusst die StartSmartConfig()
Funktion aus, da sich diese automatisch mit einem für sie vorgesehenen
IP Verbinden will. Daher rufe ich die wlan_connect(...) Funktion selber
auf und sage dem Modul welches Netz (ssid) und die Länge. Im 2. Schritt
übergebe ich die IP Adresse, Wireshark zeigt mir trotzdem kein WiFi
Modul an.
Hat sich schon jemand mit dem befasst? Ich wäre sehr dankbar, wenn mir
eine/r einen kleinen Tipp geben könnte...
glg F.S.
Ich hab mich nun weiter gespielt.
1 | //************************** MY PROGRAM ******************************
| 2 |
| 3 | //IP Address 192.168.43.210
| 4 |
| 5 | pucSubnetMask[0] = 0xFF;
| 6 | pucSubnetMask[1] = 0xFF;
| 7 | pucSubnetMask[2] = 0xFF;
| 8 | pucSubnetMask[3] = 0x0;
| 9 |
| 10 | pucIP_Addr[0] = 192;
| 11 | pucIP_Addr[1] = 168;
| 12 | pucIP_Addr[2] = 43;
| 13 | pucIP_Addr[3] = 210;
| 14 |
| 15 | pucIP_DefaultGWAddr[0] = 192;
| 16 | pucIP_DefaultGWAddr[1] = 168;
| 17 | pucIP_DefaultGWAddr[2] = 43;
| 18 | pucIP_DefaultGWAddr[3] = 1;
| 19 | //
| 20 | // Currently no implementation of DHCP in hte demo
| 21 | //
| 22 | pucDNS[0] = 0;
| 23 | pucDNS[1] = 0;
| 24 | pucDNS[2] = 0;
| 25 | pucDNS[3] = 0;
| 26 |
| 27 | rs232_printf("IP == %d\n", pucIP_Addr[0]);
| 28 | rs232_printf("IP == %d\n", pucIP_Addr[1]);
| 29 | rs232_printf("IP == %d\n", pucIP_Addr[2]);
| 30 | rs232_printf("IP == %d\n", pucIP_Addr[3]);
| 31 |
| 32 | netapp_dhcp((unsigned long *) pucIP_Addr, (unsigned long *) pucSubnetMask,
| 33 | (unsigned long *) pucIP_DefaultGWAddr, (unsigned long *) pucDNS);
| 34 |
| 35 | //Connect to WLAN
| 36 |
| 37 | ulSsidLen2 = 0x04;
| 38 | pcSsid2 = "fadi";
| 39 |
| 40 | rs232_printf("Wert von wlan_connect == %d\n",
| 41 | wlan_connect(0, (char *) pcSsid2, ulSsidLen2, NULL, NULL, 0));
| 42 |
| 43 | while ((ulCC3000DHCP == 0) || (ulCC3000Connected == 0))
| 44 | {
| 45 | __delay_cycles(1000);
| 46 | }
| 47 |
| 48 | //Opening the Socket
| 49 |
| 50 | ulSocket2 = socket(AF_INET, SOCK_STREAM, IPPROTO_UDP);
| 51 | if (ulSocket2 < 0)
| 52 | {
| 53 | rs232_printf("Error in Socket deskriptor\n");
| 54 | }
| 55 | // memset(&tSocketAddr, 0, sizeof(sockaddr));
| 56 |
| 57 | // TODO REVEIVE UDP DATA**********************************************************
| 58 | memset(tSocketAddr.sa_data, 0, sizeof(sockaddr));
| 59 | tSocketAddr.sa_family = AF_INET;
| 60 | tSocketAddr.sa_data[0] = 15;
| 61 | tSocketAddr.sa_data[1] = 01;
| 62 |
| 63 | // rs232_printf("\nbind = %d\n",
| 64 | // bind(ulSocket2, (sockaddr*) &socketAddr, sizeof(sockaddr)));
| 65 |
| 66 | if (bind(ulSocket2, &tSocketAddr, sizeof(sockaddr)) != 0)
| 67 | {
| 68 | rs232_printf("Bind connection FAILED== %d\n");
| 69 | }
| 70 |
| 71 | sockLen = sizeof(sockaddr);
| 72 | rs232_printf("sockLen = %d\n", sockLen);
| 73 |
| 74 | //call recvfrom
| 75 | ReturnValue = recvfrom(ulSocket2, pucCC3000_Rx_Buffer,
| 76 | CC3000_RX_BUFFER_SIZE, 0, &tSocketAddr, &tRxPacketLength);
| 77 | // ReturnValue = recvfrom(ulSocket2, pucCC3000_Rx_Buffer,
| 78 | // CC3000_RX_BUFFER_SIZE, 0, (sockaddr*) &from, &tRxPacketLength);
| 79 | rs232_printf("ReturnValue = %d\nnow printing packet\n", ReturnValue);
| 80 | //print buffer
| 81 | DispatcherUartSendPacket(pucCC3000_Rx_Buffer, ReturnValue);
| 82 | rs232_printf("\nBuffer = %a\n", tSocketAddr.sa_data);
|
Ich bin mir nicht sicher woran es noch liegt. Ich kann Daten aus dem
Modul empfangen, aber leider keine UDP Packte empfangen. Das Programm
hängt nachdem ich die recvfrom() aufrufe. Liegt es vlt am UDP Code? Ist
was allgemein am UDP falsch?
Ich habe lange recherchiert und es scheint da ganz ganz viele
Schwierigkeiten mit diesem Modul allgemein zu geben, nur ganz wenige
Lösungen dazu...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
|