Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.01.2011, 03:55
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,696
Сказал спасибо: 188
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Опять про Басик
пиплы, совсем я все забыл.
ввод вывод работает на ком порт а вот только одно но - пишу я вот так значит
MSComm1.Output = "55"
то есть выводится аски код двух пятерок
а как сделать вывод имено числа 55?
в досе помню чтото там было типа chr$ чтоли но в вб6 это уже не работает в лоб
|
|
|
|
20.01.2011, 08:19
|
|
Прописка
Регистрация: 04.08.2008
Сообщений: 203
Сказал спасибо: 33
Сказали Спасибо 75 раз(а) в 58 сообщении(ях)
|
Re: опять про басик
Попробуй так:
MSComm1.Output = chr(55)
__________________
Последний раз редактировалось Gerbicid; 20.01.2011 в 08:22.
|
|
|
|
20.01.2011, 12:55
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Опять про басик
По правилам, на Output нужно передавать строку или массив байтов:
Dim Buffer(1) As Byte
Buffer(0) = 55
MSComm1.Output = Buffer
Что-то длинно получается. А что, если просто байт засунуть ? Попробуйте так:
MSComm1.Output = 55
ЗЫ. Подумал трошки ... Не, второй вариант не пойдёть. Нужно передавать адрес начала массива или строки. А во втором варианте передаём адрес (55) переменной, а не само значение ...
Последний раз редактировалось Yurkin2007; 20.01.2011 в 13:10.
|
|
|
|
20.01.2011, 17:04
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,696
Сказал спасибо: 188
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Опять про Басик
заработало chr
а еще вопрос - переодически вылетает прога и пишет - порт уже открыт. тогда другой команд батоном закрываю порт и опять вылетает и пишет что порт уже закрыт.
нестабильная какая то тема с этим портом почему то
то работает то нет........
|
|
|
|
20.01.2011, 19:47
|
|
Прописка
Регистрация: 23.01.2008
Сообщений: 102
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 19 сообщении(ях)
|
Re: Опять про Басик
Сообщение от индюк
|
нестабильная какая то тема с этим портом почему то
то работает то нет
|
Для работы с COM портом используй, компонент из вложения.
Он стабильно работает.
|
|
|
|
20.01.2011, 20:33
|
|
Прописка
Регистрация: 04.08.2008
Сообщений: 203
Сказал спасибо: 33
Сказали Спасибо 75 раз(а) в 58 сообщении(ях)
|
Re: Опять про Басик
Сообщение от индюк
|
заработало chr
а еще вопрос - переодически вылетает прога и пишет - порт уже открыт. тогда другой команд батоном закрываю порт и опять вылетает и пишет что порт уже закрыт.
нестабильная какая то тема с этим портом почему то
то работает то нет........
|
Проверяй при открытии и закрытии порта свойством ...PortOpen. Это свойство возвращает тип Boolean.
__________________
|
|
|
|
20.01.2011, 20:44
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Опять про Басик
От себя хочу добавить модуль для VB6, который использую сам. Будут по нему вопросы, милости прошу.
С портом работаю так - открываю, по таймеру опрашиваю буфер. Он на 4000 байт, что позволяет делать это не часто.
По второму таймеру делаю таймаут, после которого процедура заканчивается, данные получены.
|
|
|
|
24.01.2011, 05:21
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,696
Сказал спасибо: 188
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Опять про Басик
всем спасибо
связь наладил. по обычному варианту пока. оказалось переходник узби-ком тупил чото.
напрямую наладить связь проца с компом через узби выше моих сил с этой кучей энд поинтов и прочих идентификаторов, но время камень точит)))))
вобщем щас прикидочный вариант выглядит так-
Public x As Integer
Private Sub Command1_Click()
MSComm1.CommPort = 5
MSComm1.Settings = "128000,N,8,1"
MSComm1.InputMode = comInputModeText
MSComm1.InBufferSize = 1
MSComm1.PortOpen = True
End Sub
Private Sub Command2_Click()
MSComm1.PortOpen = False
End Sub
Private Sub MSComm1_OnComm()
d = MSComm1.Input
c = Val(d)
Print c ----------выдает цыфру ноль на каждую длиную строку
Print d ----------выдает длиную строку с аски кодами (проц цыфрует пока наводку 50гц)
PSet (x, 100 * c + 500)
x = x + 1
End Sub
вобщем то наверно опытный глаз понял в чем моя трабла теперь
порт принимает в буфер, сколько я не понял пока и когда буфер заполняется то выдает длинющую строку несмотря вот на эту строку
MSComm1.InBufferSize = 1
а я хотел отдельно каждое значение подставлять в координату точки и строить типа график
помогите как мне так сделать правильно?
и почему буфер не становится равным 1?
я подставлял другие значения - 10, 50, 100 - ничего не меняется
Последний раз редактировалось индюк; 24.01.2011 в 05:33.
|
|
|
|
24.01.2011, 14:34
|
|
Прописка
Регистрация: 04.08.2008
Сообщений: 203
Сказал спасибо: 33
Сказали Спасибо 75 раз(а) в 58 сообщении(ях)
|
Re: Опять про Басик
По моему надо установить Rthreshold, если я ничего не путаю.
__________________
|
|
|
|
24.01.2011, 15:09
|
|
Прописка
Регистрация: 30.05.2010
Сообщений: 180
Сказал спасибо: 8
Сказали Спасибо 57 раз(а) в 39 сообщении(ях)
|
Re: Опять про Басик
Вы по идее должны принимать бинарные данные. Текстовые нельзя.
поэтому свойство InputMode должно быть иным.
Цитата:
|
You can also receive incoming data as either text or binary data by setting the InputMode property to one of the following Visual Basic constants: comInputModeText or comInputModeBinary. The data will either be retrieved as string or as binary data in a Byte array. Use comInputModeText for data that uses the ANSI character set and comInputModeBinary for all other data, such as data that has embedded control characters, Nulls, etc.
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:49.
|
|