Отправка данных по tcpip с использованием Microchip PIC18F - PullRequest
2 голосов
/ 20 января 2010

Все примеры в демонстрационном приложении TCPIP построены с использованием специальной программы, которая создает веб-страницу, которая вызывает обратные вызовы при изменении веб-страницы. Можно ли получать значение от датчика каждые X секунд и отправлять данные через HTTP POST?

Ответы [ 2 ]

4 голосов
/ 21 января 2010

Я делаю это прямо сейчас. Считывание значения с датчика каждые x секунд должно быть довольно очевидным, но кодирование сообщения с помощью «POST» немного сложнее.

Я сделал что-то вроде следующего универсального пакета:

        TCPPutROMString(MySocket, (ROM BYTE*)"POST ");
        TCPPutROMString(MySocket, RemoteURL);
        TCPPutROMString(MySocket, (ROM BYTE*)" HTTP/1.1\r\nHost: ");
        TCPPutROMString(MySocket, ServerName);
        TCPPutROMString(MySocket, (ROM BYTE*)"\r\nContent-Length:         
                        [put number of all following characters here]\r\n\r\n");
        TCPPutROMString(MySocket, (ROM BYTE*)"variable1=whatever");
        TCPPutROMString(MySocket, (ROM BYTE*)"&variable2=whatever");
        TCPPutROMString(MySocket, (ROM BYTE*)"&variable3=whatever");
0 голосов
/ 21 января 2010

Я уверен, что ваша веб-страница должна запрашивать данные с сервера. Я никогда не видел, чтобы сервер мог принудительно обновить страницу. Вы можете попробовать использовать метатеги для обновления страницы или создать Java-апплет для запроса файла, содержащего динамические переменные, для данных датчика, которые вы хотите прочитать. Я также подумал о написании своего собственного протокола на основе telnet, который бы передавал данные в приложение, которое подключалось к нему через порт TCP / IP, но решил, что это будет не намного лучше, чем использование протокола HTTP, который уже поддерживается для предоставления данные в мой апплет. Вероятно, это будет намного быстрее, но и намного больше работы. Это действительно зависит от того, как часто вы хотите обновить данные. Если это порядка 5-10 секунд, и у вас есть только одно соединение, то использование HTTP должно работать нормально. Если у вас есть несколько соединений и вы хотите, чтобы данные обновлялись каждую секунду или около того, вы можете пойти по маршруту Telnet. Я не видел ни одного демонстрационного приложения, которое бы делало это, но было бы неплохо, если бы Microchip предоставил для этого демонстрационное приложение, поскольку у меня была та же проблема, что и у вас.

...