Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 706
от 13.02.2008, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 275, Экспертов: 43
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 122209: Здрасьте Уважаемые эксперты! У меня "не большая" проблема. Где только не интересовался и не спрашивал. Нормальной(полноценной) помощи, так и не нашёл. Проблема вот в чем. Есть программа(см. приложение), которая создана в QBasic. По...

Вопрос № 122.209
Здрасьте Уважаемые эксперты!
У меня "не большая" проблема. Где только не интересовался и не спрашивал. Нормальной(полноценной) помощи, так и не нашёл.
Проблема вот в чем. Есть программа(см. приложение), которая создана в QBasic. Появилась острая необходимость перевести её в VB6. Как это сделать не догоняю. И самое ужасное, что старая прога работала с 1COMport, а нужно что бы она сама определяла какой порт задействован.
Если вам не составит труда ,помогите подробным описанием как это перевести или(что вообще для меня будет счастьем) написать пример перевода.
Заранее благодарен.

Приложение:

Отправлен: 08.02.2008, 10:24
Вопрос задал: Evgen819 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Evgen819!
Лучшим вариантом, ИМХО, было бы просто все переписать для VB6.
а для этого варианта, можно воспользоватся тем, что Form и Picture поддерживают команду PRINT, полностью рабочий варианта у меня нет, слишком уж много всяких Goto И Gosub, тяжело разобраться.
что изменил:
весь вывод делаю сразу на форму
весь Ваш код поместил в обработчик Form_Load
в самом начале вызываю Show, чтоб показать форму
добавил 3 процедуры которых нет в VB6:

Sub Color(ByVal fg As Long, ByVal bg As Long)
'игнорирую
End Sub

Sub OUT(v, g)
'здесь надо реализовать вывод в порт
End Sub

Sub LOCATE(ByVal row As Long, ByVal column As Long, Optional ByVal cursor As Boolean, Optional ByVal astart As Long, Optional ByVal astop As Long)
CurrentX = column * TextWidth("o")
CurrentY = row * TextHeight("o")
End Sub


вместо INPUT "НАСТРОЙКА ТРАТА ="; b3(33)
написал
b3(33) = InputBox("НАСТРОЙКА ТРАТА =")

для перехвата нажатия клавиш добавил:


Private INKEY$

Private Sub Form_KeyPress(KeyAscii As Integer)
INKEY$ = Chr$(KeyAscii)
End Sub

и перед b$ = INKEY$ вставил DoEvents
вот собственно и все, см приложение.
пишет команды из файла, по ESC выходит, по ENTER выводит что то там про табло, так работает или не так не знаю.
а для работы с портами можно использовать Microsoft Comm Control.
Успехов.

Приложение:

Ответ отправил: HookEst (статус: Практикант)
Ответ отправлен: 08.02.2008, 15:15
Оценка за ответ: 4
Комментарий оценки:
Спасибо. В принципе я и хотел чтобы эту программу полностью переписать в VB6. Будем пробовать.

Отвечает: DrakoN
Здравствуйте, Evgen819!
Пример для vb7 visula studio 2003. Извините есть образці только для Net платформы.

Create an instance of CRs232 then set COM parameters before invoking the Open method
Here's an example:
Dim moRS232 as New Rs232()
With moRs232
.Port = 1 '// Uses COM1
.BaudRate = 2400 ' // 2400 baud rate
.DataBit = 8 ‘// 8 data bits
.StopBit = Rs232.DataStopBit.StopBit_1 '// 1 Stop bit
.Parity = Rs232.DataParity.Parity_None '// No Parity
.Timeout = 500 '// 500 ms of timeout admitted to get all required bytes
End With
'// Initializes and Open
moRS232.Open ()
You can, optionally control the state of DTR/RTS lines after the Port is open
'// Set state of RTS / DTS
moRS232.Dtr = True
moRS232.Rts = True

In case of an error/problems an exception is raised, so i suggest you to enclose the code within a Try...Catch block.

Transmitting data to COM Port
The class has 2 buffers one for Tx and one for Rx, to transmit data just set the TxData property with the informations you wish to send then invoke the Tx method.
example:
moRS232.Write(txtTx.Text)

Receiving data from COM Port
Just invoke the Rx method passing it the number of bytes you want to read from COM port, then read the Rxdata property.
example:
moRS232.Read(10) '// Gets 10 bytes from serial communication buffer
Dim sRead as String=moRs232.InputStreamString
линк на пример проекта которій вам нужен
http://www.codeworks.it/net/rs232.zip

остальное вам уже сделали


---------
От Винта!
Ответ отправил: DrakoN (статус: Студент)
Ответ отправлен: 09.02.2008, 02:58
Оценка за ответ: 4


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.70 от 17.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное