Сообщение от Easyrider83
|
pasipaka,
Процедурка с посылкой строки и переносом коретки:
Код:
|
void uart_print_string(USART_TypeDef * USARTx, char * string, char newline)
{
while (*string != 0x00){ uart_send_char(USARTx, *string++);}
if (newline!=0){uart_send_char(USARTx, 13);}
} |
Аналогично без переноса коретки:
Код:
|
void uart_print_string(USART_TypeDef * USARTx, char * string)
{
while (*string != 0x00) uart_send_char(USARTx, *string++);
} |
|
Спасибо что отозвался!.
По WinZ строкам все ясно.
Но я просто буду массив из 32 байтов (числа измерений) слать один за другим. Вот как мне отделить один массив от другого.
Заранее сорри, я софтвернй i2c, spi, 1wire реализовал, потому протоколы знаю. А вот по сом некогда вчитываться, да и имхо не нужно.
На пике делал так:
mUSBUSARTTxRam((byte*)INBUFF,6); т.е. посылал 6 байтов.
а потом на ПК читал:
ReadFile(handlerr, buf_in, 6, &numbytes_readed, 0); читал эти же 6 байтов.
Т.е. там послал 6, а там принял 6.
А вот на стм32 я шлю побайтово: USART2-›DR=send_byte.
Там что меня смущает: если я буду читать с ПК по 6 байтов: ReadFile(handlerr, buf_in, 6, &numbytes_readed, 0);
то все равно как я из мк их туда пошлю? побайтово. Т.е. я считаю только тогда, когда 6 байтов вышлеться? А если я вышлю 3, точ ничего не считается. Или считается только часть?
Или же нет? и нужно после посыла 6 байтов какой-то разделитель посылать, вроде вот этот массив закончился и дальше идет следующий.
Мне важно или прочитать всб пачку, например 6, или если их там в очереди меньше 6 то вообще лучше ничего.
Т.е. важно чтобы размер пакетов по отправке и приему соварадал.
Может глупо, но надеюсь вопрос ясен.
З.Ы. а вообще причина этого: если слать побайтово и если я с ПК побайтово читаю, то ПК не успевает все вычитывать, т.к. винда читает до около 200раз в секуду. Т.е. размер посылки нужно увеличивать, дабы за 1 раз (из тех 200) винда больше инфы вычитывала. Т.е. пакет увеличивать.
Вот в стм32 один посланный байт - это один пакет или всеравно как. Их можно слать хоть по одному а с ПК читать хоть по тысячи?
Но тогда проблема: напрмер, я успел послать только 3 из 6, а винда толко 3 из массива из 6 считала. И потом у меня весь протокол обмена рушится.