Доброго времени суток. Недавно я купил 2 платы Ардуино Мега2560 и Итернет шилд к ней. Пытаюсь связать комп и Ардуинину по Итернет соединению. Пока получается не очень...
Вот код для ардуино:
#include ‹SPI.h›
#include ‹Ethernet.h›
byte mac[] = { 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF};//MAC - адрес ШИЛДА
IPAddress ip(192,168,1,5);//IP - ШИЛДА
EthernetServer server(80);//Порт который использует браузер
void setup()
{
// запускаем Ethernet соединение и сервер:
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
EthernetClient client = server.available();// ожидание подключения
if (client)
{ // HTTP запрос заканчивается пустой строкой
boolean currentLineIsBlank = true;
while (client.connected())
{
if (client.available())
{
char c = client.read();
if (c == '\n' && currentLineIsBlank)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//Теперь введите IP-адрес назначенный Arduino в //адресной строке браузера.
//Лучше использовать чистую вкладку, т.к //страница сразу забьётся числами
//Данные пойдут от шилда, он будет работать как //генератор
for(byte x = 0; x ‹= 255; x++)
{
client.println( x );
delay(10);
}
break;
}
if (c == '\n')
{
currentLineIsBlank = true;// начало новой строки
}
else
if (c != '\r')
{
currentLineIsBlank = false;// получили символ в //текущей строке
}
}
}
delay(10);//Небольшая задержка, чтобы дать время браузеру //для получения данных
client.stop();// закрываем соединение
}
}
И соответственно код для Делфи:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Memo1.Lines.Add('['+TimeToStr(Time)+'] Сервер создан');
Form1.Memo1.Lines.Add('['+TimeToStr(Time)+'] Ожидание соединения...');
Form1.Caption := 'Соединение с клиентом...';
try
Form1.ServerSocket1.Active := true;
Form1.ClientSocket1.Address := '192.168.1.5';
Form1.ClientSocket1.Active := true;
Form1.ClientSocket1.Socket.SendText('\n');
except
end;
end;
procedure TForm1.ServerSocetClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add('Ждём...');
Form1.Memo1.Lines.Add('[' + TimeToStr(Time) + ']' + ' подключился компьютер ' + socket.RemoteHost);
end;
procedure TForm1.ServerSocetClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(Socket.ReceiveText());
end;
Ничего тут непонятного нет, код простой. И не работает. Причём если я делаю запрос через браузер, то всё работает, а как получить такой же запрос на делфи? Спасибо.