ПЛК (Arduino Mega 2560 + W5100)

Модератор: Alex

kanzler
Сообщения: 4
Зарегистрирован: Пт окт 14, 2016 7:26 am
Благодарил (а): 0
Поблагодарили: 0

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение kanzler » Ср окт 19, 2016 10:29 am

uni писал(а): А где находится "движок", исполняющий скрипты?
В той же DUE.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Ср окт 19, 2016 3:07 pm

kanzler писал(а):В той же DUE.
Можно посмотреть на исходник интерпретатора скриптов?
Россия навсегда!
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение olehs » Ср окт 19, 2016 11:59 pm

alexsis_76 писал(а):uni у Вас случайно нет исходников TFTP клиента indy?
https://svn.atozed.com:444/svn/Indy10/t ... ialFTP.pas

Юзер Indy-Public-RO без пароля
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение alexsis_76 » Чт окт 20, 2016 1:22 am

Отлично.Спасибо большое :)
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Пн окт 24, 2016 7:24 am

Наставлял тут товарища на путь истинный и похоже, что можно загружать файлы с web-странички напрямую, используя стандартные средства ajax. Это тоже надо попробовать.

1. Ссылка: upload file from browser to SD card .
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение alexsis_76 » Пн окт 24, 2016 8:14 am

что можно загружать файлы с web-странички напрямую,
можно ,POST запросы и поехали,только надо учесть быстродействие карты.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Пн окт 24, 2016 9:17 am

Отправка идёт по мере получения, т.е. неважно какое быстродействие. Я использовал этот способ заливки файлов в роутерах на основе OpenWrt, когда мне нужно было обновить прошивку роутера через web-интерфейс.
Россия навсегда!
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Пн окт 24, 2016 9:22 am

Собрал виртуальную машину для отладки участков кода, не связанных с ethernet-картой (scmRTOS, sd-карта и пр.). Периодически буду её дополнять (архив нужно будет закачивать снова).

1. Виртуальная машина отладки (AVDM) .
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение alexsis_76 » Пн окт 24, 2016 9:57 am

Вот так обновляется в микрочипе
~inc:header.inc~
<div id="content">

<h1>File Uploads</h1>

<p>The HTTP server can accept file uploads via POST. This can be used for
many applications such as allowing users to upload configuration settings files.
Each application must implement its own file processor. This example
calculates the MD5 hash of any file.</p>

<form action="upload.htm" method="post" enctype="multipart/form-data">
<div class="examplebox">
~uploadedmd5~
<p style="margin-bottom: 2px"><b>File: </b>&nbsp;
<input type="file" name="md5file" size="30" /> &nbsp;
<input type="submit" value="Get MD5" />
</p>
</div>
</form>

<p>This is an advanced feature. For more information, please refer to the
implementation in <code>CustomHTTPApp.c</code> for comments and explaination.</p>

</div>

<script type="text/javascript">
<!--
document.getElementById('hello').innerHTML = "~hellomsg~";
-->
</script>
~inc:footer.inc~
сама мордочка
/*****************************************************************************
Function:
static HTTP_IO_RESULT HTTPPostMD5(void)

Summary:
Processes the file upload form on upload.htm

Description:
This function demonstrates the processing of file uploads. First, the
function locates the file data, skipping over any headers that arrive.
Second, it reads the file 64 bytes at a time and hashes that data. Once
all data has been received, the function calculates the MD5 sum and
stores it in curHTTP.data.

After the headers, the first line from the form will be the MIME
separator. Following that is more headers about the file, which we
discard. After another CRLFCRLF, the file data begins, and we read
it 16 bytes at a time and add that to the MD5 calculation. The reading
terminates when the separator string is encountered again on its own
line. Notice that the actual file data is trashed in this process,
allowing us to accept files of arbitrary size, not limited by RAM.
Also notice that the data buffer is used as an arbitrary storage array
for the result. The ~uploadedmd5~ callback reads this data later to
send back to the client.

Precondition:
None

Parameters:
None

Return Values:
HTTP_IO_DONE - all parameters have been processed
HTTP_IO_WAITING - the function is pausing to continue later
HTTP_IO_NEED_DATA - data needed by this function has not yet arrived
***************************************************************************/
#if defined(STACK_USE_HTTP_MD5_DEMO)
static HTTP_IO_RESULT HTTPPostMD5(void)
{
WORD lenA, lenB;
static HASH_SUM md5; // Assume only one simultaneous MD5

#define SM_MD5_READ_SEPARATOR (0u)
#define SM_MD5_SKIP_TO_DATA (1u)
#define SM_MD5_READ_DATA (2u)
#define SM_MD5_POST_COMPLETE (3u)

// Don't care about curHTTP.data at this point, so use that for buffer
switch(curHTTP.smPost)
{
// Just started, so try to find the separator string
case SM_MD5_READ_SEPARATOR:
// Reset the MD5 calculation
MD5Initialize(&md5);

// See if a CRLF is in the buffer
lenA = TCPFindROMArray(sktHTTP, (ROM BYTE*)"\r\n", 2, 0, FALSE);
if(lenA == 0xffff)
{//if not, ask for more data
return HTTP_IO_NEED_DATA;
}

// If so, figure out where the last byte of data is
// Data ends at CRLFseparator--CRLF, so 6+len bytes
curHTTP.byteCount -= lenA + 6;

// Read past the CRLF
curHTTP.byteCount -= TCPGetArray(sktHTTP, NULL, lenA+2);

// Save the next state (skip to CRLFCRLF)
curHTTP.smPost = SM_MD5_SKIP_TO_DATA;

// No break...continue reading the headers if possible

// Skip the headers
case SM_MD5_SKIP_TO_DATA:
// Look for the CRLFCRLF
lenA = TCPFindROMArray(sktHTTP, (ROM BYTE*)"\r\n\r\n", 4, 0, FALSE);

if(lenA != 0xffff)
{// Found it, so remove all data up to and including
lenA = TCPGetArray(sktHTTP, NULL, lenA+4);
curHTTP.byteCount -= lenA;
curHTTP.smPost = SM_MD5_READ_DATA;
}
else
{// Otherwise, remove as much as possible
lenA = TCPGetArray(sktHTTP, NULL, TCPIsGetReady(sktHTTP) - 4);
curHTTP.byteCount -= lenA;

// Return the need more data flag
return HTTP_IO_NEED_DATA;
}

// No break if we found the header terminator

// Read and hash file data
case SM_MD5_READ_DATA:
// Find out how many bytes are available to be read
lenA = TCPIsGetReady(sktHTTP);
if(lenA > curHTTP.byteCount)
lenA = curHTTP.byteCount;

while(lenA > 0u)
{// Add up to 64 bytes at a time to the sum
lenB = TCPGetArray(sktHTTP, curHTTP.data, (lenA < 64u)?lenA:64);
curHTTP.byteCount -= lenB;
lenA -= lenB;
MD5AddData(&md5, curHTTP.data, lenB);
}

// If we've read all the data
if(curHTTP.byteCount == 0u)
{// Calculate and copy result to curHTTP.data for printout
curHTTP.smPost = SM_MD5_POST_COMPLETE;
MD5Calculate(&md5, curHTTP.data);
return HTTP_IO_DONE;
}

// Ask for more data
return HTTP_IO_NEED_DATA;
}

return HTTP_IO_DONE;
}
#endif // #if defined(STACK_USE_HTTP_MD5_DEMO)
то что находится в микроконтроллере,считается MD5
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение nightwind » Пн окт 24, 2016 10:47 am

Господа изобретают велосипед из пакетов для мусора? Ваш проект надо писать на Brainfuck), будет еще круче!
Зачем, ЗАЧЕМ лепить ртос еще и с интерпретатором в таком дохлом камне?? тут интерес или академический чисто, или автор фанат авр? возьми за 3 доллара esp8266 - и проц в разы лучше, и памятей на порядок больше. а лучше stm32, где тебе и дма и езернет и милилон гпио.
пс. не стеб, просто вспомнил себя в детстве, когда накупил за копейки аттини, и все делал на них. По 3 ночи оптимизаций, когда не хватает 4 байт флэша)
Ответить