1

私はArduinoでTCPサーバーを構築しようとしています.CC3000 WiFiモジュール(Sparkfun)用のhttps://github.com/sparkfun/CC3000_WiFi_Breakoutライブラリを使用しています。

/********************************

Hardware Connections:

 Mega Pin   CC3000 Board    Function

 +5V        VCC or +5V      5V
 GND        GND             GND
 2          INT             Interrupt
 35         EN              WiFi Enable
 53         CS              SPI Chip Select
 51         MOSI            SPI MOSI
 50         MISO            SPI MISO
 52         SCK             SPI Clock

***********************************/

#include <SPI.h>

#include <SFE_CC3000.h>

#include <utility/socket.h>

#include <Ethernet.h>

#include <Dns.h>

// Pins
#define CC3000_INT      2   // Needs to be an interrupt pin (D2/D3)
#define CC3000_EN       35   // Can be any digital pin
#define CC3000_CS       53  // Preferred is pin 10 on Uno

// Connection info data lengths
#define IP_ADDR_LEN     4   // Length of IP address in bytes
#define MAC_ADDR_LEN    6   // Length of MAC address in bytes

#define LOCALHOST 2130706433 // 127.0.0.1 in long
#define PORT 5100 // port to be used

// Constants
char ap_ssid[] = "HTC";                  // SSID of network
char ap_password[] = "123456789";          // Password of network
unsigned int ap_security = WLAN_SEC_WPA2; // Security of network
unsigned int timeout = 30000;             // Milliseconds
//const char static_ip_addr[] = "0.0.0.0";

sockaddr_in sck_addr, client_addr;
int client_addr_len;

// Global Variables
SFE_CC3000 wifi = SFE_CC3000(CC3000_INT, CC3000_EN, CC3000_CS);

void setup() {

  ConnectionInfo connection_info;

  // Initialize Serial port
  Serial.begin(115200);
  Serial.println();
  Serial.println("---------------------------------");
  Serial.println("Quadrocopter - BSD Socket Test");
  Serial.println("---------------------------------");

  // Initialize CC3000 (configure SPI communications)
  if ( wifi.init() ) {
    Serial.println("CC3000 initialization complete");
  } else {
    Serial.println("Something went wrong during CC3000 init!");
  }

  // Connect using DHCP
  Serial.print("Connecting to: ");
  Serial.println(ap_ssid);
  if(!wifi.connect(ap_ssid, ap_security, ap_password, timeout)) {
    Serial.println("Error: Could not connect to AP");
  }

  // Print out connection details
  if( !wifi.getConnectionInfo(connection_info) ) {
    Serial.println("Error: Could not obtain connection details");
  } else {
    Serial.println("Connected!");
    Serial.println();
  }

  memset(&sck_addr, 0, sizeof sck_addr);
  sck_addr.sin_family = AF_INET;
  inet_aton("127.0.0.1", &sck_addr.sin_addr);
  sck_addr.sin_port = htons(PORT);
  int sck = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  // Disconnect
//  if ( wifi.disconnect() ) {
//    Serial.println("Disconnected");
//  } else {
//    Serial.println("Error: Could not disconnect from network");
//  }
}



void loop() {

  // Do nothing
  delay(1000);

}

utility/socket.h のコード スニペット

typedef struct _in_addr_t
{
    unsigned long s_addr;                   // load with inet_aton()
} in_addr;

typedef struct _sockaddr_t
{
    unsigned short int    sa_family;
    unsigned char     sa_data[14];
} sockaddr;

typedef struct _sockaddr_in_t
{
    short            sin_family;            // e.g. AF_INET
    unsigned short   sin_port;              // e.g. htons(3490)
    in_addr          sin_addr;              // see struct in_addr, below
    char             sin_zero[8];           // zero this if you want to
} sockaddr_in;

sck_addr.sin_addr を設定する必要がありますが、このライブラリには inet_aton 関数がありません。

Arduino Ethernet ライブラリから dns ライブラリ (inet_aton が定義されています) をインポートしようとしましたが、inet_aton が認識されませんでした。

4

0 に答える 0