Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Exel a RS 232
mailover




Typ: neutral
Postów: 40
Zarejestrowany: Mar 2003
Exel a RS 232

Czy można w exelu zrobić tak, by dane przychodzące przez RS 232 były wyświetlane w exelu.
Format danych:
>DS(nr)<(wartość typu integer)(CR16)
jako nr - numer czujnika - 12 bajtów
wartość integer to wartość temperatury
CR16 - suma kontrolna
W exelu ma być kilka tabel - do 99 czujników
wyświetlanie numeru czujnika i wartości.
Pozdrawiam

03-12-2003 13:25
Pokaż profil mailover  Wyślij email do mailover   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
?!

Jeśli umiesz czytać dane z tego portu, to da się to zapisać w dowolnej postaci.
Rozumiem, że chcesz, aby to właśnie Excel czytał te dane i zapisywał w jakimś skoroszycie...


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

03-12-2003 19:08
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
mailover




Typ: neutral
Postów: 40
Zarejestrowany: Mar 2003

Potrafię przy użyciu vb obsługiwać transmisję przez port RS 232 .
Poszczególne dane - numer czujnika - a w zasadzie nazwa czujnika ma być w nagłówku w tabeli, pod nią data i godzina otrzymania danych, w następnej wartość przesłana przez port .
Normalnie to mam to co odbiorę w zmiennych.
to ze zmiennych muszę przesłać do Exela , a następnie zapamiętać to wszystko w pliku.
Pozdrawiam

03-12-2003 19:21
Pokaż profil mailover  Wyślij email do mailover   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
to sprawa jest prosta

Pracujesz w VB, tak? Więc, musisz ustawić referencję do aplikacji MS Excel w oknie "Referencje". Dalej postępuj, jak w przykładzie, który ostatnio zamieściłem na NewsGruop Microsoftu:

Sub SendReportToXLS(Optional autosave As Boolean = False)
Dim ExApp As Excel.Application
Dim ExWbk As Excel.Workbook
Dim ExWsh As Excel.Worksheet
Dim i As Long
On Error GoTo Err_SendReportToXLS

Set ExApp = CreateObject("Excel.Application" 'utwórz nową instancję Excela, by wykorzystać otwartą instancję użyj GetObject()
Set ExWbk = ExApp.Workbooks.Add 'utwórz nowy skoroszyt, by otworzyć istniejący użyj metody Open("ścieżka"
Set ExWsh = ExWbk.Worksheets(1) 'ustaw referencję do pierwszego arkusza. kolejne to wyższy indeks 2..100
'uruchom petle po wszystkich danych
For i = 1 to 100
    With ExWsh
        .Range("A" & i) = dane1 'koluma A wiersz 1...100
        .Range("B" & i) = dane2
        .Range("C" & i) = dane3
        .Range("D" & i) = dane4
    End With
Next i
'aby zapisać po bieżącą datą i godziną
If autosave Then ExWbk.SaveAs "C:" & Now() & ".xls"

'pokaż aplikację i zapisane dane
ExApp.Visible = True

Exit_SendReportToXLS:
On Error Resume Next
    Set rst = Nothing
    Set ExWsh = Nothing
    'ExWbk.Close SaveChanges:=False
    Set ExWbk = Nothing
    'ExApp.Quit
    Set ExApp = Nothing
    Exit Sub

Err_SendReportToXLS:
    MsgBox Err.Description, vbExclamation, "Error number: " & Err.Number
    Err.Clear
    GoTo Exit_SendReportToXLS

End Sub


Dopasuj to do swoich potrzeb. Swoją drogą, podeślij mi kod aplikacji, bo jestem ciekaw, jak rozwiązałeś odczyt z RS 232. Oczywiście, jeśli to nie problem.

[Post edytowany dnia 03-12-2003 20:36 przez losmac]


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

03-12-2003 20:29
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
mailover




Typ: neutral
Postów: 40
Zarejestrowany: Mar 2003

Option Explicit
Public dane as string
public sinWarto(199) as Single
'Bez obsługi błędów i wyboru portu Comm
Private Sub Form_Load()
  MSComm1.CommPort = 1
  MSComm1.Settings = "19200,n,8,1"
  MSComm1.RThreshold = 1
  MSComm1.PortOpen = True
End Sub
' W związku z tym że aplikacja jest wieloformatkowa to deklaracja jest typu Public

Public Sub MSComm1_OnComm()
  Select Case MSComm1.CommEvent
    Case comEvReceive
    dane = MSComm1.Input
    Label1 = Label1 & dane
  End Select
Timer1.Enabled = True
End Sub
'W timer1 sprawdzam co jest jako label1.capcion
W zależności od długości tekstu i treści następuje podział danych do okreslonych pól na różnych formatkach - łacznie ze względu na ilość danych ta procedurka ma tylko 43KB więc nie wiem czy ją ci przesyłać
Przykład:
Private Sub timer1_Timer()
  Dim strData as string
  Dim strGodzina as string
  Dim strZnacznik as string
  Dim strWartosc as string
  Timer1.enabled=false
  strznacznik=lef(label1,5)
  Select case strznacznik
    case="<DS01"
    strgodzina =mid(label1,6,5)
    strdata = mid(label1,12,8)
    strwartosc=mid(label1,21,6)
    sinwarto(1)=val(strwartosc)/100
    label1=""
.....
.....
.....
    End select
label1=""
end sub
W sumie powyższa procedurka obejmuje podział danych do 199 punktów.Wyświetlanie jest zrealizowane na poszczególnych formatkach w niezależnych timerach ustawionych co 60 sekund
Taki format przesyłania danych jest spowodowany wydajnością procesorów AVR firmy atmel i możliwością obsłużenia czujników temperatury typu DS1820 i magistrali RS485 - podobne do RS 232 lecz można dołączyć do lini nawet 127 urządzeń.
Korzystam z int tylko okazyjnie u kolegi więc moje odpowiedzi są rzadko.
Jeśli jest potrzebne coś dokładniej to rzuć jakieś namiary sms'em na numer 502999832-akceptuje z internetu

09-12-2003 14:44
Pokaż profil mailover  Wyślij email do mailover   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
...

Nie, nie chcę abyś więcej wysyłał, tylko byłem ciekaw jak rozwiązałeś odczyt z RS'a i zapis do Excela.


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

09-12-2003 17:26
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
mega78




Typ: neutral
Postów: 2
Zarejestrowany: Mar 2004
Prosba

Czy możesz mi przesłać najprostszy kod w exellu do otwierania portu rs-232 i odbierania/wysylania przez niego znaków???

22-03-2004 14:08
Pokaż profil mega78  Wyślij email do mega78   
Wszystkich odpowiedzi: 6 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1