Считайте данные со Сканнера штрихкода в приложении Windows .net (C#)! [закрытый]

is является оператором равенства идентичности (функционирующим как id(a) == id(b)); просто два одинаковых числа не обязательно являются одним и тем же объектом. По соображениям производительности некоторые маленькие целые числа являются memoized , поэтому они будут иметь тенденцию быть одинаковыми (это можно сделать, поскольку они являются неизменяемыми).

PHP ===, с другой стороны, описывается как проверка равенства и типа: x == y and type(x) == type(y) в соответствии с комментарием Пауло Фрейтаса. Этого достаточно для общих чисел, но отличается от is для классов, которые определяют __eq__ абсурдным образом:

class Unequal:
    def __eq__(self, other):
        return False

PHP, по-видимому, допускает то же самое для «встроенных» классов (что Я подразумеваю реализацию на уровне C, а не в PHP). Немного менее абсурдным использованием может быть объект таймера, который имеет различное значение каждый раз, когда он используется как число. Весьма почему вы хотели бы эмулировать Visual Basic Now, а не показывать, что это оценка с time.time(), которую я не знаю.

Грег Хьюджилл (OP) сделал один пояснительный комментарий «Моя цель это сравнение идентичности объекта, а не равенства стоимости. За исключением чисел, где я хочу рассматривать идентичность объекта так же, как равенство стоимости. "

У этого был бы еще один ответ, поскольку мы должны классифицировать вещи как числа или нет, чтобы выбрать, сравнивать ли мы с == или is. CPython определяет протокол number , включая PyNumber_Check, но это не доступно из самого Python.

Мы могли бы попытаться использовать isinstance со всеми которые мы знаем, но это неизбежно было бы неполным. Модуль типов содержит список StringTypes, но не NumberTypes. Начиная с Python 2.6, встроенные числовые классы имеют базовый класс numbers.Number , но он имеет ту же проблему:

import numpy, numbers
assert not issubclass(numpy.int16,numbers.Number)
assert issubclass(int,numbers.Number)

Кстати, NumPy будет производить отдельные экземпляры с низкими номерами.

На самом деле я не знаю ответа на этот вариант вопроса. Я предполагаю, что теоретически можно использовать ctypes для вызова PyNumber_Check, но даже эту функцию обсуждали , и это, конечно, не переносимо. Мы просто должны быть менее конкретными в отношении того, что мы тестируем сейчас.

В конце концов, эта проблема связана с тем, что Python первоначально не имел дерева типов с предикатами, такими как Scheme number? или класса Haskell Num . is проверяет идентификацию объекта, а не равенство значения. PHP также имеет красочную историю, где ===, по-видимому, ведет себя как is только на объектах в PHP5, но не на PHP4 . Таковы растущие трудности перемещения по языкам (включая версии одного).

13
задан Alnitak 6 February 2009 в 10:23
поделиться

4 ответа

Посмотрите на разъем сканера.

, Если это похоже на это:

, затем это keyboard wedge сканер. Это действует как клавиатура: просто вводит Ваш штрихкод в поле редактирования.

, Если это похоже на это:

, это serial port сканер.

необходимо создать экземпляр System.IO.Ports.SerialPort и использовать его для общения со сканером.

, Если это похоже на это:


(источник: datapro.net )

, это USB сканер. С точки зрения программиста это может быть или keyboard wedge или serial port сканер. Необходимо посмотреть на руководство, узнать, который является им, и используйте один из подходов выше.

P.S. Будет легче при регистрации модели сканера здесь, действительно.

35
ответ дан 1 December 2019 в 17:59
поделиться

Самое современное действие сканеров штрихкода точно так же, как клавиатуры.

я ранее написал код в C# для сканирования билетов - никакие специальные необходимые приемы, просто удостоверьтесь, что фокус ввода находится в подходящем текстовом поле, и просканируйте код!

4
ответ дан 1 December 2019 в 17:59
поделиться

Если Вы используете клин клавиатуры, обычно устройство или втискиваете программное обеспечение, позволяют снабжать префиксом и/или снабжать суффиксом поток клавиатуры дополнительные символы.

можно использовать ключевой предварительный просмотр на форму, чтобы "послушать" для префикса & суффиксные символы - и при прерывании чего-то, что напоминает штрихкод, текст штрихкода, могут отправляться в корректное окно редактирования или использоваться для появления диалогового окна.

при установке собственных систем кодирования, в зависимости от типа штрихкода можно также встроить специальные символы в к штрихкоду для идентификации то, что сканируется, например, сканирование, запускающееся с SB^, представило бы сканирование мусорного ведра запаса.

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

0
ответ дан 1 December 2019 в 17:59
поделиться

Я теперь использую сканнеры штрихкода USB WCS3905 Осы, присоединенные к нескольким из моей winform (и 1 консоль) приложения, хотя не заметили различий с другими брендами сканера USB.

способ, которым я всегда тестирую, когда новый приходит, состоит в том, чтобы разжечь блокнот и просканировать загрузку кодов от всего, что подворачивается под руку; книги, DVD, теги актива, но самое главное запас я должен отследить. Это позволит Вам, визуализируют, как данные собраны.

, По моему опыту, они все действуют как пользователь, вводящий каждый символ последовательно на клавиатуре, сопровождаемой "Ввести" нажатием клавиши.

Для каждого символа (ПРИМЕЧАНИЕ: не завершают штрихкод), просканированный в управлении текстовым полем затем, по крайней мере, после огня событий:
KeyDown
KeyPress
TextChanged
KeyUp

нажатие клавиши Enter в конце сканирования может использоваться для продвижения AcceptButton

формы, нужно, вероятно, отметить, что я только использовал их на британско-английском & американо-английские настроенные системы окон.

G-

5
ответ дан 1 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: