Текущий архив: 2011.11.06;
Скачать: CL | DM;
Вниз
Приложение по работе с устройством по RS232 теряет байты Найти похожие ветки
← →
plr (2011-07-06 19:13) [0]Досталось мне в наследство приложение 2005 года (Delphi6 исходные коды) по работе с купюроприёмником CashCode CCNET, которое работает по RS232.
Для работы с портом используется библиотека CPort http://comport.sf.net/
За приложением последнее время замечается, что периодически ни с чем не связанная проблема потери байт.
И я не знаю как подступиться, тем более, я толком не разработчик.
Прощу помощи от специалистов, кто разбирается в работе с RS232 с внешними устройствами, чтобы сделать аудит кода, указать на "узкие" места, предложить варианты решения и, возможно, доработать приложение, чтобы оно работало лучше.
За работу мы заплатим.
Пишите пожалуйста job.rabota@gmail.com
P.S. Я понимаю, что надо копаться в чужом коде, который еще и 2005 года выпуска, но объем кода небольшой.
Я понимаю, что у вас нет устройства и я не смогу его предоставить, придётся на пальцах, но можно еще подглядеть как работает у "старших" братьев http://dev.cyberplat.com/redmine/repositories/browse/pt/2.0/src/Modules/Devices/Protocols/Validators/CCNet/Implementation1
Выложить исходники не могу, лучше мы сработаем с кем-то персонально.
← →
Loginov Dmitry © (2011-07-06 23:03) [1]
> За приложением последнее время замечается, что периодически
> ни с чем не связанная проблема потери байт.
Приложение может не причем. Бывает, что в таких ситуациях виновато железо. Пишите все отправленные и полученные байты в логи. Можно воспользоваться программой PortMon (в случае ОС Windows) (или иными аналогичными программами). При возникновении проблемы (например, пользователь сунул купюру, а на экране устройства ничего не отобразилось), можно отреагировать на соответствующее обращение пользователя, главное, чтобы был известен момент времени выполнения операции.
Проблема только на одной точке или на нескольких?
← →
plr (2011-07-06 23:44) [2]Проблема на разных компьютерах, разных купюроприёмниках, понимаете, что это платёжные терминалы на которых не просто наблюдать вживую плюс возникает эта ситуация непредсказуемо и самое главное, мы не сразу о ней узнаем, а когда узнаём не знаем точного времени, чтобы по логам отследить.
Но приложение написано не идеально в любом случае, я думаю оно писалось "в лоб", а сейчас нам требуется тонкая настройка, нюансы RS232, я не знаю, буферы, циклы и т.п. Нужен профессиональный взгляд специалиста.
← →
Германн © (2011-07-07 01:07) [3]
> P.S. Я понимаю, что надо копаться в чужом коде, который
> еще и 2005 года выпуска, но объем кода небольшой.
Найдите и наймите лучше кого-нибудь, кто напишет новый грамотный код.
P.S. А как вы определили что имеет место именно "потеря байт"?
← →
sniknik © (2011-07-07 01:11) [4]что то странное... не знаете ничего, но знаете что байты "пропадают", откуда?
претензии клиентов в том что им денег недодали? в любом случае должны быть логи, номер транзакции, запросы к серверу, и т.д.. т.е. сопоставив эту инфу с тем откуда узнали о байтах, найдете и время...
> Нужен профессиональный взгляд специалиста.
разрабатываете платежный софт и не имеете специалиста?... время нанять.
не разрабатываете, а пользуетесь чужим?... звоните в поддержку.
← →
Германн © (2011-07-07 01:51) [5]
> Досталось мне в наследство
> За работу мы заплатим.
Кому "мне" и кто "мы"?
P.S. Не мне судить, но этому топику не место в тематических конференциях!
Пусть обращается на "Королевскую площадь" или на "помощь студентам" на Исходниках или на Винграде.
А у нас пусть пойдёт в "Прочее".
← →
tesseract © (2011-07-07 11:26) [6]А вот нефиг использовать сторонние компоненты. Вес которых причем превышает код на api раз в 60.
> P.S. А как вы определили что имеет место именно "потеря
> байт"?
Встречался c такими "потерями" на зашумленных линиях (провод рядом с холодильниками). Но там была не "потеря", а CRC бился.
← →
Anatoly Podgoretsky © (2011-07-07 11:36) [7]> tesseract (07.07.2011 11:26:06) [6]
Особенно при нарушение спецификации на длину провода и/или его тип.
← →
tesseract © (2011-07-07 11:52) [8]
> Особенно при нарушение спецификации
Там весьма недесткий кабелёк c экраном.
Спецификации по длине провода на Rs232 весьма запутаны кстати. Столько-то метров при такой фазе луне и такой скорости порта и с таким драйвером :-)
← →
plr (2011-07-07 12:06) [9]> Найдите и наймите лучше кого-нибудь, кто напишет новый грамотный код.
Ищем кого нанять на разовую работу, нет же предрассудков ни у кого на этот счёт, да?
> разрабатываете платежный софт и не имеете специалиста?... время нанять.
Как много сочувствующих людей. Мы разрабатываем софт для себя и сами его эксплуатируем. Драйвер купюроприемника, о котором идёт речь разработан был в 2005 году разработчиком по-контракту (с ним контакт потерян), сейчас ищем специалиста, кто смог бы нам помочь с "причёсыванием оного".
> P.S. А как вы определили что имеет место именно "потеря байт"?
"Лишние" деньги в стекере иногда попадаются и обращения плательщиков.
> в любом случае должны быть логи, номер транзакции, запросы к серверу, и
> т.д.. т.е. сопоставив эту инфу с тем откуда узнали о байтах, найдете и
> время...
Плательщики обращаются не сразу, не помнят точное время, проблема возникает редко, не могли ни разу засечь точное время и посмотреть логи.
> Встречался c такими "потерями" на зашумленных линиях (провод рядом с
> холодильниками). Но там была не "потеря", а CRC бился.
Холодильников нет, корпус терминала - экран, CRC не бьётся в принятых данных.
> Особенно при нарушение спецификации на длину провода и/или его тип.
Провод 1-1,3 м
← →
Inovet © (2011-07-07 12:31) [10]> [9] plr (07.07.11 12:06)
> CRC не бьётся в принятых данных
Может ошибка где-нибудь в программе давится.
← →
tesseract © (2011-07-07 13:48) [11]
> Может ошибка где-нибудь в программе давится.
Может мусор в буфер набивается сдвигая последовательность? Редкий баг трудноуловимый.
← →
plr (2011-07-07 15:18) [12]2tesseract: при расчете CRC? Может быть, я уже в таких тонкостях не разбираюсь.
Но я всё таки думаю, что там проблема в циклах опроса порта и обращений к нему, может быть в них не всё попадает.
← →
Dennis I. Komarov © (2011-07-07 15:23) [13]
> Как много сочувствующих людей. Мы разрабатываем софт для
> себя и сами его эксплуатируем. Драйвер купюроприемника,
> о котором идёт речь разработан был в 2005 году разработчиком
> по-контракту (с ним контакт потерян), сейчас ищем специалиста,
> кто смог бы нам помочь с "причёсыванием оного".
Непонятно, чего Вы (или кого) тут хотите найти? С одной стороны предлагаете разовую работу, с другой не говорите что надо. (Абстракция "надо подружить некий девайс" не катит) 90% что код придется переписывать, а не причесывать. А как это творение отлаживать вообще не понятно.
← →
sniknik © (2011-07-07 15:54) [14]> 90% что код придется переписывать, а не причесывать.
в 99% случаев при
> но объем кода небольшой.
это еще и проще...
← →
Anatoly Podgoretsky © (2011-07-07 16:39) [15]
> Провод 1-1,3 м
Тогда этого достаточно для передачи на скорости 115200 на 1.5 метра, незащищенным кабелем.
← →
tesseract © (2011-07-07 16:50) [16]
> Тогда этого достаточно для передачи на скорости 115200 на
> 1.5 метра,
Вообще-то 15-ти. Но многое будет зависеть от драйвера порта.
← →
Anatoly Podgoretsky © (2011-07-07 16:54) [17]> tesseract (07.07.2011 16:50:16) [16]
Правильно, я ошибся, конечно 15
← →
Anatoly Podgoretsky © (2011-07-07 16:57) [18]Хотя вот виписка из дурипедии
> На практике, в зависимости от качества применяемого кабеля,
> требуемое расстояние передачи данных в 15 метров может
> не достигаться, составляя, к примеру, порядка 1,5 м на скорости
> 115200 бод для неэкранированного плоского или круглого кабеля.
15 метров это вроде для скорости 9600
← →
tesseract © (2011-07-07 17:07) [19]
> 15 метров это вроде для скорости 9600
Это по стандарту. RS232S-C вообще 115200 не содержит. На практике с драйверами по рассчетам выходит предел в 15 метров. 19200 например жгло на 50 метров на витой паре на складах без проблем.
← →
tesseract © (2011-07-07 17:08) [20]на 9600 бод неэкран по стандарту - 76 метров.
http://www.vtsoft.ru/support/service/rs232.php
← →
plr (2011-07-07 19:31) [21]> Непонятно, чего Вы (или кого) тут хотите найти? С одной стороны предлагаете
> разовую работу, с другой не говорите что надо.
Надо рассмотреть исходный код, описание протокола, исходный код альтернативного драйвера, как мне кажется более качественно выполненного, как пример.
Предложить, что можно переделать и почему.
Мы договоримся о цене и сроках.
← →
Inovet © (2011-07-07 19:56) [22]А стандартный драйвер Майкрософт чем не устраивает?
← →
plr (2011-07-07 20:46) [23]2Inovet: дайте ссылку на стандартный драйвер купюроприёмника от Майкрософта, я не знаю. Если вы о Cport, то он был выбран и использован, думаю из-за удобства, не знаю.
← →
DiamondShark © (2011-07-07 20:49) [24]
> А стандартный драйвер Майкрософт чем не устраивает?
Видимо, своим отсутствием.
← →
Inovet © (2011-07-07 21:20) [25]> [24] DiamondShark © (07.07.11 20:49)
> > А стандартный драйвер Майкрософт чем не устраивает?
>
> Видимо, своим отсутствием.
Хм, наверно я что-то не понимаю. А что тогда у меня в диспетчере устройст написано:
Последовательный порт (COM1)
Поставщик драйвера: Microsoft
и т.д.
И терминал с портом работает - отправляет принимает.
← →
plr (2011-07-07 21:46) [26]2Inovet. Да, получается вы не понимаете. Где я писал, что меня не устраивает "драйвер COM-порта"? Речь идёт о драйвере устройства, которое работает через стандартный COM-порт, на который конечно же устанавливается стандартный драйвер COM-порта.
← →
Сергей М. © (2011-07-07 22:10) [27]
> не знаю как подступиться, тем более, я толком не разработчик.
> Прощу помощи от специалистов
Ну и чего ты собссно хотел, если ты дуб дубом , судя по цитате ?
Идешь в любой фриланс-ресурс и трясешь там лопатником ..
Здесь-то ты ЧТО хотел ?)
← →
Inovet © (2011-07-07 22:12) [28]> [26] plr (07.07.11 21:46)
> Речь идёт о драйвере устройства
Понятно. А протокол работы с устройством известен, документирован?
← →
Inovet © (2011-07-08 01:27) [29]> [28] Inovet © (07.07.11 22:12)
> А протокол работы с устройством известен, документирован?
Через порт в смысле.
← →
Dennis I. Komarov © (2011-07-08 11:03) [30]Да не нужен там никакой драйвер. R/W через COM, чего лапшу на уши вешать? Спецификации к девайсу нужны, и еще, как я понял, девайсы различные, и протоколы тоже могут отличаться. А про "надо немного допилить готовое" не надо... Железо, спецификации и требования в студию, и еще на сколько Вы за это готовы обеднеть, а то "Мы договоримся о цене и сроках" не о чем. Может кто и...
З.Ы.
> Мы разрабатываем софт для себя и сами его эксплуатируем.
ССЗБ
← →
tesseract © (2011-07-08 12:39) [31]
> Да не нужен там никакой драйвер.
Так действительно называют библиотеки для работы с устройством. Драйвер ведь не обязательно должен работать в режиме ядра и поддерживать pnp.
← →
Dennis I. Komarov © (2011-07-08 13:17) [32]
> Так действительно называют библиотеки для работы с устройством.
Ты меня понял... ;-)
copy a.txt prn (lpt) тоже драйвером кликать будем? :)
← →
tesseract © (2011-07-08 13:55) [33]
> copy a.txt prn (lpt) тоже драйвером кликать будем? :)
Почему-то на COM-порт не отрабатывает.
← →
Anatoly Podgoretsky © (2011-07-08 14:13) [34]> tesseract (08.07.2011 13:55:33) [33]
Потому что нужно указывать AUX а не PRN
Работает отлично. В свое время были принтеры, подключеные по COM
← →
tesseract © (2011-07-08 14:49) [35]
> В свое время были принтеры, подключеные по COM
Что прям без перенастройки порта перед copy?
← →
Германн © (2011-07-08 14:53) [36]
> Что прям без перенастройки порта перед copy?
Ну куда же без моды?
:)
← →
Anatoly Podgoretsky © (2011-07-08 14:56) [37]> tesseract (08.07.2011 14:49:35) [35]
Именно так, но можно было и перенастраивать, команда MODE в ДОС, и/или
параметры порта в устройствах.
Страницы: 1 вся ветка
Текущий архив: 2011.11.06;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.003 c