#matlab #serial-port #usbserial #oscilloscope
Вопрос:
Сообщество,
Я использую систему Win 7 с установленным Matlab R2015 с управлением приборами. И осциллограф Tektronix TDS1012, подключенный к моему компьютеру через USB-последовательный разъем. Устройство подключается и распознается ПК и системой управления прибором.
Если я отправляю сообщение программы, прибор принимает его. С другой стороны, при выполнении запросов он считывает предыдущее сообщение программы, отправленное в качестве ответных сообщений. Пример:
fprintf(deviceObj, '*IDN?')
fscanf(deviceObj)
ans =
*IDN?
Более того, если бы я отправил сообщение программы, как *RST
это было сделано, прибор сбросился бы, но он также выводит то же самое сообщение программы
fprintf(deviceObj, '*RST') #This Line
fscanf(deviceObj)
ans =
*RST
ВОПРОС: Чего мне здесь не хватает? Может быть, это мой Usb-последовательный кабель?
PS: вот конфигурация осциллографа (она совпадает с конфигурацией прибора)
default_val =
BaudRate: 9600
BreakInterruptFcn: ''
ByteOrder: 'littleEndian'
BytesAvailable: 0
BytesAvailableFcn: ''
BytesAvailableFcnCount: 48
BytesAvailableFcnMode: 'terminator'
BytesToOutput: 0
DataBits: 8
DataTerminalReady: 'on'
ErrorFcn: ''
FlowControl: 'none'
InputBufferSize: 512
Name: 'Serial-COM5'
ObjectVisibility: 'on'
OutputBufferSize: 512
OutputEmptyFcn: ''
Parity: 'none'
PinStatus: [1x1 struct]
PinStatusFcn: ''
Port: 'COM5'
ReadAsyncMode: 'continuous'
RecordDetail: 'compact'
RecordMode: 'overwrite'
RecordName: 'record.txt'
RecordStatus: 'off'
RequestToSend: 'on'
Status: 'closed'
StopBits: 1
Tag: ''
Terminator: 'LF'
Timeout: 10
TimerFcn: ''
TimerPeriod: 1
TransferStatus: 'idle'
Type: 'serial'
UserData: []
ValuesReceived: 0
ValuesSent: 0
>> default_val.PinStatus =
CarrierDetect: 'off'
ClearToSend: 'on'
DataSetReady: 'on'
RingIndicator: 'off'
Комментарии:
1. Сначала определите, имеете ли вы дело с локальным эхом или удаленным эхом. Например, путем отправки команд с отсоединенным от области видимости концом USB/последовательного кабеля RS-232.
2. Получаете ли вы какие-либо данные, поступающие из области видимости, смешанные с повторяемыми командами? Если вы слышите обе стороны, это «эхо» (локальное или удаленное). Если вы слышите только себя, это, вероятно, «петля».
3. Всякий раз, когда я пытаюсь получить какие-либо данные или запросы, я слышу только себя. Во время публикации я проверял адаптер, и он уже был в конфигурации обратной связи. Затем я отключаю «локальное эхо» с помощью термита, и все равно остается «эхо». Я бы проверил насчет удаленного эха! Но, это наверняка путь, по которому нужно идти, благодаря вашему комментарию.
4. «это уже было в конфигурации обратной связи», вы этого не хотите. Отключите обратную связь и посмотрите, поможет ли это.
Ответ №1:
Некоторые последовательные интерфейсы делают это намеренно, если вы хотите подключить несколько устройств по последовательной цепочке. Повторяя команду, вы можете переключиться на первое устройство и обратиться к следующему, просто удвоив длину кадра. (Каждое устройство действует как регистр сдвига).