Вверх ↑
Этот топик читают: Гость
Ответов: 8
Рейтинг: 0
#1: 2010-06-09 16:18:50 ЛС | профиль | цитата
Всем привет. Помогите начинающему . суть вопроса в следующем , пытаюсь связаться с через ком порт с терминальной прогой вроде без особых проблем связь устанавливается , но есть одна странность , не получается преобразовать данные для передачи , мне нужно чтобы в компорт пришло однобайтное число , например число 10 должно передаваться как 10 а не 31 и 30 . подскажите что не так делаю. зарание всем спасибо.
ps странно не могу добавить файл, и что это значит < У вас не хватает прав для выполнения этой операции>
карма: 1

0
Ответов: 1379
Рейтинг: 86
#2: 2010-06-09 16:34:38 ЛС | профиль | цитата
Вставка и копирование схем на форуме
карма: 0

0
Ответов: 8
Рейтинг: 0
#3: 2010-06-09 16:43:39 ЛС | профиль | цитата
code_18767.txt
спасибо petrocan
карма: 1

0
файлы: 1code_18767.txt [1.4KB] [515]
Ответов: 3349
Рейтинг: 233
#4: 2010-06-09 16:46:22 ЛС | профиль | цитата
Convertor
Mode: IntToBin
карма: 1

0
Разработчик
Ответов: 26115
Рейтинг: 2126
#5: 2010-06-09 16:48:47 ЛС | профиль | цитата
Тут надо использовать вот такую связку, тогда будет передаваться байт в бинарном представлении



Add(Convertor,6705390,399,427)
{
Mode=4
}
Add(Convertor,2731637,350,427)
{
Mode=1
link(onResult,6705390:doConvert,[])
}


Ivann писал(а):
Mode: IntToBin

Иван, я тебя уже предупреждал -- не знаешь, не лезь с советами. Следующий раз выпишу тебе профилактический бан на несколько часов
карма: 22

0
Ответов: 3349
Рейтинг: 233
#6: 2010-06-09 16:52:27 ЛС | профиль | цитата
nesco, а IntToBin чем не подходит? или я чтото не так понял?
карма: 1

0
Разработчик
Ответов: 26115
Рейтинг: 2126
#7: 2010-06-09 16:53:23 ЛС | профиль | цитата
Ivann писал(а):
IntToBin

Bin, в данном случае -- текстовое представление бинарных данных. Вот скажи, зачем передавать восемь лишних байт, когда само значение занимает всего один байт
карма: 22

1
Голосовали:Ivann
Ответов: 3349
Рейтинг: 233
#8: 2010-06-09 17:03:28 ЛС | профиль | цитата
nesco, сhar - это символ = 1 байту
карма: 1

0
Ответов: 8
Рейтинг: 0
#9: 2010-06-09 17:12:58 ЛС | профиль | цитата
nesco огромное спасибо , сам связать два компонента не догадался , буду дальше пробовать , только теперь принимать байты с микроконтроллера
карма: 1

0
Ответов: 1161
Рейтинг: 160
#10: 2010-06-09 17:34:15 ЛС | профиль | цитата
Ivann писал(а):
сhar - это символ = 1 байту

Это у нас так. Есть еще и WideChar, где символ - 2 бита
nesco писал(а):
Тут надо использовать вот такую связку, тогда будет передаваться байт в бинарном представлении

А зачем перевод Str -> Int? Ведь второй конвертер работать с данными будет не как со строкой, а как с числом
code_18768.txt
карма: 0

0
файлы: 1code_18768.txt [591B] [510]
Разработчик
Ответов: 26115
Рейтинг: 2126
#11: 2010-06-09 19:04:02 ЛС | профиль | цитата
LainX писал(а):
А зачем перевод Str -> Int?

В принципет да, не нужен, тк String в конверторе читается как Integer, да и FormatStr там лишний, если ничего не использовать больше
карма: 22

0
Ответов: 8
Рейтинг: 0
#12: 2010-06-09 21:39:25 ЛС | профиль | цитата

И вновь вопрос??? Как то странно организован компорт на прием байтов , для того чтобы началось чтение с ком порта нужно воспроизвести какое нибудь событие тобиш нажать на кнопку или еще как нибудь заставить его читать. А разве ком порт не генерит прерывание которое видела бы программа и по нему начинала бы заполнять буфер???? Да и насчет буфера какой максимальный размер возможно установить?? А то у меня при 266 прога вылетает с ошибкой.
объясните пожалуйста что я не так делаю ?
Add(MainForm,2203837,252,126)
{
Width=812
Height=308
link(onActivate,3822672:doOpen,[(334,132)(334,146)])
link(onDeactivate,3822672:doClose,[(325,139)(325,153)])
}
Add(Button,84825,252,211)
{
Top=250
Width=75
Caption="Read next"
link(onClick,63129:doData,[])
}
Add(DoData,63129,301,211)
{
Data=Integer(400)
link(onEventData,3822672:doRead,[(356,217)(356,174)])
link(Data,21542:Text,[])
}
Add(Edit,21542,301,162)
{
Left=110
Top=250
Width=35
Height=21
Text="8"
DataType=1
}
Add(COM,3822672,385,140)
{
BaudRate=115200
link(onRead,16406592:doAdd,[])
}
Add(Memo,16406592,462,147)
{
Left=5
Top=10
Width=790
Height=225
}




карма: 1

0
файлы: 1code_18779.txt [644B] [462]
Ответов: 1328
Рейтинг: 69
#13: 2010-06-09 22:15:07 ЛС | профиль | цитата
sl_64, поставь таймер и читай побайтно
------------ Дoбавленo в 22.15:
sl_64 писал(а):
А то у меня при 266 прога вылетает с ошибкой.
256 максимум помоему
карма: 2

0
Ответов: 8
Рейтинг: 0
#14: 2010-06-10 12:42:56 ЛС | профиль | цитата
Konst писал(а):
поставь таймер и читай побайтно

Спасибо Konst , но в моем устройстве такой метод ( через таймер)чреват потерей данных. Нашел на форуме асинхронный ком порт - большое спасибо автору за этот компонент, но есть вопрос как его прикрутить к программе . код я положил в папку с кодами ини с инишниками иконку к иконкам в результате пример компилится , но хотелось бы чтобы этот элемент сом порта был видим во вкладке элементы-> разное -> порты.
карма: 1

0
Ответов: 1161
Рейтинг: 160
#15: 2010-06-10 12:56:51 ЛС | профиль | цитата
sl_64, для установки было достаточно закинуть ini файл в HiAsm. HiAsm бы сам все куда надо бы раскидал.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)