Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.57 MB
Время: 0.01 c
6-1245285760
Yus
2009-06-18 04:42
2011.11.06
NMPOP3 дата отправки письма


2-1310730839
Anthony
2011-07-15 15:53
2011.11.06
Изменить цвет выделения в TRichEdit


15-1310117366
Bober1
2011-07-08 13:29
2011.11.06
service application


15-1309965191
plr
2011-07-06 19:13
2011.11.06
Приложение по работе с устройством по RS232 теряет байты


3-1265045910
lamer6666
2010-02-01 20:38
2011.11.06
Транзакция в ZConnection (ZeoS)