Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Генерация синхрометок на LTR-EU-8-1

Вы не вошли.

 Поиск | Регистрация | Вход 

Максим
22.12.2011 10:16:53
#1

Гость

Генерация синхрометок на LTR-EU-8-1

Добрый день.

Крейт LTR-EU-8-1.
Подключение через Ethernet.
LTRServer 1.5.3.0

Возникла задача генерации меток на 2-х крейтах LTR-EU-8-1. Когда был один крейт, то обходился указанием пустого серийного номера. Теперь же необходимо указывать серийный номер. Как правильно передать строку с серийным номером в LTR Server. Мой код приводит к ошибке. Участок кода с конвертированием строки в массив байт выделен комментарием ниже. Предполагаю, что некорректно конвертирую строку. Помогите пожалуйста.

static _ltr010api.TLTR10 hCrate = new _ltr010api.TLTR10();
static _LTRNative.TLTR_CONFIG hLTR_config;
_LTRNative.LTRERROR ltr_status;

hCrate.Ltr = _LTRNative.NewLTR;

ltr_status = _LTRNative.LTR_Init(ref hCrate.Ltr);
hCrate.Ltr.cc = (ushort)_LTRNative.LTRCC.CONTROL;
//
// здесь указываем серийный номер
string SN_string = /"2D228266/"
char[] CSN = SN_string.ToCharArray();
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
hCrate.Ltr.csn = encoding.GetBytes(CSN);
//
//
hCrate.Ltr.saddr = CNF_MANAGER.IP_LTR_SERVER;
hCrate.Ltr.sport = (ushort)CNF_MANAGER.PORT_LTR_SERVER;
// открытие канала связи с крейтом
ltr_status = _LTRNative.LTR_Open(ref hCrate.Ltr);
// вызываем функцию конфигурации
ltr_status = _LTRNative.LTR_Config(ref hCrate.Ltr, ref hLTR_config);

22.12.2011 17:52:20
#2

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,379

Re: Генерация синхрометок на LTR-EU-8-1

Здравствуйте.
В данном случае просто так присвоить полю csn переменную типа byte[] не получится, так как csn – статический массив размера SERIAL_NUMBER_SIZE (задано атрибутами при определении), а byte[] - управляемый тип, по сути ближе к указателю из C.

Можно конечно воспользоваться специальными классами C#, но  в данном случае, думаю, самым простым способом будет просто присвоить по одному байту (неиспользуемые байты устанавливаются в 0):

string SN_string = "2D228266”;
byte[] CSN = System.Text.Encoding.ASCII.GetBytes(SN_string.ToCharArray());

for (int i = 0; i < _LTRNative.SERIAL_NUMBER_SIZE; i++)
{
    hCrate.Ltr.csn[i] = (i < CSN.Length) ? CSN[i] : (byte)0;
}

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон:+7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск