Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.11.2008, 16:59
|
#11
|
Временная регистрация
Регистрация: 13.07.2006
Сообщений: 90
Сказал спасибо: 10
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Есть такая вещь - DDE называется. Рекмендую взглянуть. Excel является DDE сервером. Можно на дельфях или билдере наваять клиента или сервака из стандартных компонентов и пихать в любую прогу - хоть в матлаб, хот в excel, хоть в скаду какую нить. А обработку com - порта думаю несложно найти в инете.
|
|
|
|
06.11.2008, 17:08
|
#12
|
Почётный гражданин KAZUS.RU
Регистрация: 26.08.2006
Сообщений: 1,405
Сказал спасибо: 1
Сказали Спасибо 89 раз(а) в 69 сообщении(ях)
|
Сообщение от kalina147
|
Не будем изобретать велосипед и предложим работать с Excel из приложения, а не с приложением из Excel.
|
Каброн прав.
Я бы попробовал с встроенным VBA в Экселе.
В VB6 есть толковые функции работы с последовательным портом, а это значит что и в VBA экселя их можно и нужно использовать.
Строите макросик, он будет принимать из COM порта данные , там же отделять зерна от плевел, и даже записывать в нужные ячейки экселя. Можете даже себе формочку с кнопочками сделать или в меню кнопки ввести
"Освежить" "Освежить автоматически 1 раз в секунду"
"Освежить автоматически раз в 10 секунд" и т.д. пока фантазии хватит. Шеф будет даволен.
|
|
|
|
07.11.2008, 22:14
|
#13
|
Частый гость
Регистрация: 01.11.2006
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
спасибо
|
|
|
|
10.12.2008, 21:30
|
#14
|
Частый гость
Регистрация: 01.11.2006
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Из всеобщей благодарности хотел бы поделиться итогами написания макроса, может кому пригодиться
Задачу сдали в первом приближение, шеф доволен,
но вот запускать надо обязательно сперва девайс, а затем в книге макрос.
Используем стандартный драйвер Microsoft Comm Control (MSCOMM32.OCX).
Разумеется, компонент, без некоторого небольшого заклинания в системный Реестре не работает
Может кто подскажет, что можно подкоректировать, чтоб не подвисало при включение?
Цитата:
|
Option Explicit
Dim CommPort As New MSComm, bStop As Boolean
Private Sub CommandButton1_Click()
bStop = False
Call StartGetting
End Sub
' Метод открывает RS-232 порт (если он еще не открыт)
' PortNumber - Номер COM порта (COM1 = 1, COM2 = 2, ... )
Sub CommOpen(PortNumber As Integer)
If Not CommPort.PortOpen = True Then
CommPort.CommPort = PortNumber
CommPort.Settings = "115200,N,8,1"
CommPort.Handshaking = comNone
CommPort.InBufferSize = 1024
CommPort.OutBufferSize = 0
CommPort.PortOpen = True
CommPort.RThreshold = 0
End If
End Sub
' Метод закрывает RS-232 порт (если он был открыт)
Sub CommClose()
If CommPort.PortOpen = True Then
CommPort.PortOpen = False
End If
End Sub
Sub StartGetting()
Dim InpStr$ 'As String
Dim dummy%, BufCount%, I%, iRow%, iPos%, iVal% 'As Integer
Dim Bytes() As Byte
' Отсылка команды устройству
'Четние строки с ожиданием символа 0x0D в конце
CommOpen (Range("ComPortNum"))
CommPort.InputLen = 1 ' читаем последовательно по байту
CommPort.InputMode = comInputModeText ' работаем со строкой
Do ' ищем начало пакета
dummy = DoEvents() ' не вешаем систему
InpStr = InpStr + CommPort.Input
iPos% = InStr(InpStr, "TAOS") ' индификатор девайса
Loop Until iPos% › 0 ' пока не прочтём TAOS
Application.Wait (Now + TimeValue("0:00:1")) 'ждём секунду, чтобы заполнить буфер
CommPort.InputLen = 258 ' к этому моменту у нас прочитана только сигнатура
InpStr = CommPort.Input ' дочитали остаток строки 258 байт
CommPort.InputLen = 262 ' дальше читаем полными пакетами
CommPort.InputMode = comInputModeBinary
Do
dummy = DoEvents() ' не вешаем систему
BufCount = CommPort.InBufferCount
If BufCount ›= 262 Then
Bytes = CommPort.Input
If Bytes(0) = 84 And Bytes(1) = 65 And Bytes(2) = 79 And Bytes(3) = 83 Then ' проверяем сигнатуру на всякий случай ещё раз
Range("Diapazon").Value = Bytes(4) ' выводим диапазон
For I = LBound(Bytes) + 5 To UBound(Bytes) - 1 Step 2
iRow = (I - 5) / 2
iVal = Bytes(I) * 256 + Bytes(I + 1) ' собираем из исходных 256 байт - 128
Range("OutPlace").Offset(iRow, 0) = iVal ' в принципе можно сначала сформировать массив и вывести его сразу весь, проверяя CRC
Next I
End If
End If
Loop Until (bStop = True)
Call CommClose
End Sub
Private Sub CommandButton2_Click()
bStop = True
End Sub
|
[/b]
Прикрепленный файл: 3387493.zip
|
|
|
|
10.12.2008, 22:41
|
#15
|
Почётный гражданин KAZUS.RU
Регистрация: 26.08.2006
Сообщений: 1,405
Сказал спасибо: 1
Сказали Спасибо 89 раз(а) в 69 сообщении(ях)
|
Посмотрите примерчик во вложении
я уж плохо помню - давно дело было.
5 копеек :
mscomm32.ocx должен быть скопирован в ту папку где .eхе лежит , возможно в папку к экселю, тогда не нужно мудрить с реестром.
в программе должен быть обработчик прерываний от ошибок и событий порта( у Вас не вижу) возможно из-за его отсутствия у вас проблемы с зависоном если устройство вкл позже макроса.
Удачи
Прикрепленный файл: 2252726.rar
|
|
|
|
11.12.2008, 21:14
|
#16
|
Частый гость
Регистрация: 01.11.2006
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Не догнал, какой (.EXE)? Приложений не писали, у меня же только (.XLS). Спасибо за наводку на счет проверок, действительно забыли.
|
|
|
|
11.12.2008, 22:06
|
#17
|
Почётный гражданин KAZUS.RU
Регистрация: 26.08.2006
Сообщений: 1,405
Сказал спасибо: 1
Сказали Спасибо 89 раз(а) в 69 сообщении(ях)
|
У Вас приложение EXCEL.exe , попробуйте туда скопировать.
|
|
|
|
24.08.2009, 16:24
|
#18
|
Частый гость
Регистрация: 01.11.2006
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Проблема не желает помирать ![Весело](images/smilies/icon_laugh.gif)
В связке с Ёеежиком (EeePC ASUS), где нет лицензионного Microsoft Office, понадобилось закинуть наш проект в б/п аналог, например, в OpenOffice. Понятное дело полной совместимости макросов нет, напишем заново уже в ОО, но не нашли как теперь в ОО подключить mscomm32.ocx. Может кто подскажет!!!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:37.
|
|