Вверх ↑
Этот топик читают: Гость
Ответов: 8926
Рейтинг: 823
#31: 2014-05-26 15:27:01 ЛС | профиль | цитата
GanjaKyp, чуть выше доработка схемки для переворачивания строки от 5405100000000 к виду 00000000015045, что ещё нужно? разве конвертор Строка-Число
карма: 19

0
Ответов: 4630
Рейтинг: 749
#32: 2014-05-26 15:33:19 ЛС | профиль | цитата
Строки 5405100000000 не может быть

GanjaKyp писал(а):
это 25кг
05 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 0D 0A

Каждый десятичный разряд представлен в этой строке парой символов, первый из которых 0, второй - значущий. Младшие разряды (пары) находятся левее.
05 02 00 00 = 05*10^0 + 02*10^1 + ....
карма: 26

0
Ответов: 578
Рейтинг: 14
#33: 2014-05-26 15:39:38 ЛС | профиль | цитата
это я знаю) вообще все что делается с этой строкой после ее получения мне ясно, никак не пойму только как ее прочитать из com порта схема Леонида ставит меня в тупик
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#34: 2014-05-26 15:49:40 ЛС | профиль | цитата
GanjaKyp, попробуй :

Add(MainForm,2953706,168,266)
{
Point(onClose)
link(onCreate,857448:doOpen,[])
link(onClose,857448:doClose,[])
}
Add(Label,7970420,616,350)
{
Left=15
Top=80
Width=34
Height=17
Caption="Result"
}
Add(Button,9278579,168,301)
{
Left=15
Top=50
Width=155
Caption="Получить вес"
Data=String(\n)
link(onClick,857448:doWrite,[])
}
Add(Str_Enum,8400652,350,287)
{
Delimiter=""
To=6
Step=2
link(onEnum,12168318:doConvert,[])
link(onEndEnum,8488770:doEvent1,[(392,300)(392,356)])
}
Add(Convertor,12168318,413,287)
{
Mode=5
link(onResult,11212473:doStrCat,[])
}
Add(StrCat,11212473,490,287)
{
Point(doClear)
link(Str2,14973797:Var3,[(503,275)(532,275)(532,334)])
}
Add(GetDataEx,14973797,490,329)
{
link(Data,11212473:Result,[])
}
Add(Convertor,10146409,490,350)
{
Mode=1
link(onResult,5229500:doString,[])
link(Data,14973797:Var2,[])
}
Add(Hub,8488770,434,350)
{
link(onEvent1,10146409:doConvert,[])
link(onEvent2,11212473:doClear,[(465,363)(465,300)])
}
Add(COM,857448,294,280)
{
link(onWrite,9552647:doData,[(338,286)(338,254)(156,254)(156,342)])
link(onRead,8400652:doEnum,[])
}
Add(DoData,9552647,161,336)
{
Data=Integer(6)
link(onEventData,16278060:doEvent1,[])
}
Add(FormatStr,5229500,553,350)
{
Mask="%1 кГ"
link(onFString,7970420:doText,[])
}
Add(Hub,16278060,224,336)
{
link(onEvent1,857448:doRead,[(280,342)(280,314)])
link(onEvent2,857448:doRXClear,[(266,349)(266,300)])
}

(вполне возможно, что скорость нужно выбрать другую)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 578
Рейтинг: 14
#35: 2014-05-26 15:56:43 ЛС | профиль | цитата
Tad, не реагирует, просто показывает 0
карма: 0

0
Ответов: 8926
Рейтинг: 823
#36: 2014-05-26 16:04:09 ЛС | профиль | цитата
Netspirit писал(а):
Строки 5405100000000 не может быть
Это обработанная строка.
карма: 19

0
Ответов: 578
Рейтинг: 14
#37: 2014-05-26 16:05:00 ЛС | профиль | цитата
наконец то закончился рабочий день) с утра бегал подключал эти весы, завтра задам еще немного вопросов если вы не против
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#38: 2014-05-26 16:09:04 ЛС | профиль | цитата
GanjaKyp, а так:
code_33669.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_33669.txt [1.5KB] [406]
Ответов: 8926
Рейтинг: 823
#39: 2014-05-26 16:13:52 ЛС | профиль | цитата
GanjaKyp писал(а):
Tad, не реагирует, просто показывает 0
Надо читать не первые 6 символов, а последние лучше все читать, потом обработать, лучше задержку поставить на время ответа весов, а то и читать нечего (почта не пришла)
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#40: 2014-05-26 17:44:15 ЛС | профиль | цитата
Леонид писал(а):
Надо читать не первые 6 символов, а последние
А это почему ?
Схема вверху - результат внизу:
Леонид_5.png
Где-то что-то перевернуто задом наперёд ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1Леонид_5.png [111.3KB] [575]
Ответов: 8926
Рейтинг: 823
#41: 2014-05-26 18:27:22 ЛС | профиль | цитата
Tad,
GanjaKyp писал(а):
работает только неправильно как то..
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A получается 010000000000000000 должно быть 10
05 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A -> 510000000000000000 -> 15
05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A -> 500000000000000000 -> 5
Это о коде №33663
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#42: 2014-05-26 19:30:15 ЛС | профиль | цитата
Вообще-то есть такое понятие, как "ПРОТОКОЛ ОБМЕНА ДАННЫМИ". Если в документации нет (скорее всего ТС даже искать не пытался ) - запросить у изготовителя.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8926
Рейтинг: 823
#43: 2014-05-26 19:57:06 ЛС | профиль | цитата
Tad, так и я про то же:
Леонид писал(а):
..может не скупиться и купить полную версию..

Полагаю, что незаполненные символы не просто до кучи, в них может появиться, например, тара, или сумма взвешиваний для автопоезда, мы-то не знаем, как впрочем и ТС.
(Приходилось настраивать и поверять ЖД весы для взвешивании в движении, образцовые гири по 2 тонны )
карма: 19

0
Ответов: 168
Рейтинг: 7
#44: 2014-05-26 22:07:31 ЛС | профиль | цитата
Все норм, это похоже на Modbus RTU (не ASC), символов может быть разное кол-во,зависит от настроек.
все символы переводить в ASC (и нули то-же) и прибавлять к строке, пока не придет перевод/конец (0a0d)
Перевод в asc это прибавление 48(30Hex)
code_33674.txt
------------ Дoбавленo в 22.07:
А в конце набранную строку в число
карма: 1

0
файлы: 1code_33674.txt [327B] [578]
Ответов: 163
Рейтинг: 33
#45: 2014-05-27 00:08:09 ЛС | профиль | цитата
GanjaKyp писал(а):
я не могу разобраться как получить эту строку в программе (например 05 04 00 05 01 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A)

А зачем именно эту строку? Ее выдает снифер, с нашего элемента COM порт скорее всего придет 540510000000000000 и 2 не символьных кода, означающих перевод строки.
Попробуй так:
Add(MainForm,2953706,21,105)
{
}
Add(ComboBox,11023158,385,105)
{
Left=70
Top=35
Width=65
Height=21
Strings=#3:300|3:600|4:1200|4:2400|4:4800|4:9600|5:14400|5:19200|5:38400|5:57600|6:115200|6:128000|
Text=""
Point(doSelect)
}
Add(Label,7414994,322,70)
{
Left=10
Top=10
Width=47
Height=17
Caption="№ порта"
}
Add(Label,7221042,385,56)
{
Left=10
Top=40
Width=51
Height=17
Caption="скорость"
}
Add(Edit,8501238,322,119)
{
Left=70
Top=5
Text="1"
DataType=2
}
Add(COM,8120607,343,210)
{
link(onRead,10772354:doCompare,[])
link(Port,8501238:Text,[(349,180)(328,180)])
link(BaudRate,11023158:String,[(356,184)(398,184)])
}
Add(CheckBox,258478,35,203)
{
Left=10
Top=65
Width=110
Caption="открыть порт"
link(onCheck,10069476:doEvent,[])
}
Add(IndexToChanel,10069476,126,203)
{
link(onEvent1,9184129:doEvent1,[(170,209)(170,230)])
link(onEvent2,8120607:doOpen,[])
}
Add(Button,649574,35,273)
{
Left=10
Top=95
Width=110
Caption="взвесить"
link(onClick,10601268:doEvent1,[])
}
Add(If_else,10772354,406,217)
{
Op2=String()
link(onFalse,15482596:doEvent1,[])
}
Add(Hub,10601268,126,273)
{
link(onEvent1,10124000:doData,[])
link(onEvent2,16563596:doTimer,[(182,286)(182,335)])
}
Add(Timer,16563596,224,329)
{
Interval=100
Enable=1
AutoStop=100
link(onTimer,11363521:doData,[])
}
Add(DoData,11363521,273,329)
{
Data=Integer(256)
link(onEventData,8120607:doRead,[(324,335)(324,244)])
}
Add(LineBreak,14702954,119,336)
{
Caption="stop read"
link(Out,15911223:doWork2,[])
Primary=[75446,378,-133]
}
Add(Hub,15482596,455,224)
{
OutCount=3
link(onEvent1,75446:In,[(483,230)(483,209)])
link(onEvent2,13701641:doValue,[])
link(onEvent3,7250977:doEvent1,[(483,244)(483,363)])
}
Add(Memory,13701641,623,231)
{
Default=String()
}
Add(DoData,10124000,224,273)
{
Data=String(10)
link(onEventData,8120607:doWrite,[(303,279)(303,237)])
}
Add(Hub,9184129,182,224)
{
link(onEvent1,15911223:doWork1,[(207,230)])
link(onEvent2,8120607:doClose,[(270,237)(270,223)])
}
Add(HubEx,15911223,203,336)
{
link(onEvent,16563596:doStop,[])
}
Add(Str_Enum,3329721,623,322)
{
Delimiter=""
Direct=1
link(onEnum,16200581:doEvent,[])
link(String,13701641:Value,[])
}
Add(If_else,14454902,819,322)
{
Op2=String(0)
link(onFalse,7778065:doCompare,[])
}
Add(IndexToChanel,16200581,756,322)
{
Point(Index)
link(onEvent1,14454902:doCompare,[])
link(onEvent2,10758415:doWork1,[(807,335)])
link(Index,13019128:Value,[])
}
Add(Memory,13019128,756,266)
{
Default=Integer(0)
}
Add(ChanelToIndex,6164522,714,266)
{
link(onIndex,13019128:doValue,[])
}
Add(Hub,7250977,497,357)
{
OutCount=3
link(onEvent1,14424044:In,[(529,363)(529,342)])
link(onEvent2,1951499:In,[(532,370)(532,356)])
link(onEvent3,444385:doEvent1,[])
}
Add(LineBreak,4400244,658,266)
{
Caption="reset"
link(Out,6164522:doWork1,[])
Primary=[14424044,-112,70]
}
Add(LineBreak,11008380,742,392)
{
Caption="clear"
link(Out,2527612:doClear,[])
Primary=[1951499,-189,-42]
}
Add(Hub,5740559,917,329)
{
link(onEvent1,6164522:doWork2,[(943,335)(943,307)(702,307)(702,279)])
link(onEvent2,10758415:doWork3,[(943,342)(943,366)])
}
Add(HubEx,10758415,803,360)
{
Angle=1
link(onEvent,2527612:doStrCat,[(807,391)])
}
Add(Hub,444385,574,371)
{
link(onEvent1,3329721:doEnum,[(606,377)(606,328)])
link(onEvent2,1489854:doText,[(707,384)(707,468)])
}
Add(StrCat,2527612,826,385)
{
Point(doClear)
link(Str1,7676655:Var1,[(832,373)(823,373)(823,432)])
}
Add(GetDataEx,7676655,826,427)
{
link(Data,2527612:Result,[])
}
Add(If_else,7778065,868,329)
{
Type=1
Op2=Integer(9)
link(onTrue,5740559:doEvent1,[])
}
Add(Label,8529929,882,462)
{
Left=15
Top=130
Width=25
Height=17
Caption="вес:"
}
Add(Label,1489854,826,462)
{
Left=65
Top=130
Width=10
Height=17
Caption="0"
link(Text,7676655:Var2,[])
}


Код конечно китайский , лаконичней было бы обработать строку математически, как в примере Netspirit`а.
карма: 3

0
файлы: 1code_33675.txt [3.7KB] [461]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)