outlook posílá data na COM port

Uživatelský avatar
fulda
Příspěvky: 1359
Registrován: 04 led 2016, 17:18

Re: outlook posílá data na COM port

Příspěvek od fulda »

trochu by mne překvapilo, kdyby dneska někdo používal otevřený plain textový protokol.
Očekával bych M$ Exchange, maximálně s fallbackem na SSL-IMAP, ale s podmínkou mutual podnikového certifikátu.

Proto bych se vůbec nepokoušel si skládat protokol, ale rovnou volal služby systému.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
aladin
Příspěvky: 337
Registrován: 12 kvě 2013, 06:43

Re: outlook posílá data na COM port

Příspěvek od aladin »

Fuldo, vůbec nechápu, co jsi myslel.
Věc jsem už vyřešil - povolil jsem v Outlooku pravidlo pro spuštění externí aplikace, napsal baťák na inicializaci seriáku a odeslal znak do arduina přes com4.
Obrázek
That's all folks :-)

PS: když mi někdo vysvětlí, jak se to udělá přes VB, bude to také zajímavé
fischertip.cz, Stavebnice.com, MerkurRobot.cz, KlubTechniku.cz
Uživatelský avatar
fulda
Příspěvky: 1359
Registrován: 04 led 2016, 17:18

Re: outlook posílá data na COM port

Příspěvek od fulda »

a-ha, OK, možná to bude užitečné pro ostatní, tak to trochu popíšu.

To že má Microsoft extrémně rád basic je známá věc. Proč tomu tak je je také známo.
To že například makro v excelu je visual basic script je také většině lidí známo.
To že existují lidi, kteří programují ve visual basicu se asi také dá očekávat.

Takže se stačí rozhlédnout, jestli někde nemáme interpreter visual basicu (všichni víme, že basic je interpretovaný jazyk).
Mno a ejhle, v samotném systému bez přidaného office máme dva základní. Předvedeme si malé kouzlo. Vytvoříme něco jako program notepad test.vbs:

Kód: Vybrat vše

function PrintIt(A)
	wscript.echo A
End Function

For X = 1 to 5
	PrintIt(X)
Next
Uložíme a pak z příkazové řádky provedeme kouzlo: cscript test.vbs
A hádejte co se stane?

Mno, to je taková lehčí magie, psát interpret je pro děti. Tak co si dát něco "ostřejšího"?
Začneme hodně podobně, ubereme jedno písmenko (s), protože to znamená "script" a to je málo tvrdé notepad test.vb:

Kód: Vybrat vše

Module	example
	Sub PrintIt(A)
		Console.WriteLine(A)
	End Sub

	Sub Main(args as string())
		For X = 1 to 5
			PrintIt(X)
		Next
	End Sub
End Module
Uložíme a pak z příkazové řádky provedeme větší magii: C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe test.vb
Tohle už vyžaduje většího odborníka, člověk si musí vybrat jakou chce použít verzi (to jsou ta magická čísla) a vůbec musí tak nějak tušit co je co.
A teď se stane ta magie:

Kód: Vybrat vše

Microsoft (R) Visual Basic Compiler version 14.8.3761
for Visual Basic 2012
Copyright (c) Microsoft Corporation.  All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to Visual Basic 2012, which is no longer the latest version. For compilers that support newer versions of the Visual Basic programming language, see http://go.microsoft.com/fwlink/?LinkID=533241
Na konci kouzla nám v aktuálním adresáři přibylo hádejte co? No jasně: test.exe
A hádejte co to dělá?

Tak a abych uvedl správné datumy, tak vbscript máme v systému od verze W98, zatímco kompiler od verze W10

Pokud je někdo rozhodně proti basicu, je tu od W10 ještě možnost použít JScript, který se tváří jako C# interpreter.

S instalací Office se nám přidá VBA, který navíc disponuje celkem použitelným IDE. Ale to už znají všichni, kdo si pustili advanced makro v excelu.

A jako bonus pro poctivé čtenáře si uvedeme ještě jeden příklad. Jak udělat pořádné okno s pořádným nápisem notepad okno.vb:

Kód: Vybrat vše

Imports System 
Imports System.Drawing
Imports System.Windows.Forms

Public Class HelloWindows

   Inherits Form

   Private lblHelloWindows As Label

   Public Shared Sub Main(  )
      Application.Run(New HelloWindows(  ))
   End Sub

   Public Sub New(  )

      lblHelloWindows = New Label(  )            
      With lblHelloWindows
         .Location = New Point(37, 31)
         .Size = New Size(392, 64)
         .Font = New Font("Arial", 36)
         .Text = "Hello, Windows!"
         .TabIndex = 0
         .TextAlign = ContentAlignment.TopCenter
      End With
            
      Me.Text = "Programming Visual Basic .NET"
      AutoScaleBaseSize = New Size(5, 13)
      FormBorderStyle = FormBorderStyle.FixedSingle
      ClientSize = New Size(466, 127)
            
      Controls.Add(lblHelloWindows)

   End Sub

End Class
Zase použijeme magické C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe okno.vb a pak spustíme okno.exe
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
aladin
Příspěvky: 337
Registrován: 12 kvě 2013, 06:43

Re: outlook posílá data na COM port

Příspěvek od aladin »

pravopisné chyby jsem nenašel a programy fungují, jak mají. :) jen mi připadá, že bych si musel pro řešení mého zadání asi napsat vlastního klienta pro exchange, a to je poněkud složitější level.i tak díky fuldo, pěkně napsané.
fischertip.cz, Stavebnice.com, MerkurRobot.cz, KlubTechniku.cz
Uživatelský avatar
fulda
Příspěvky: 1359
Registrován: 04 led 2016, 17:18

Re: outlook posílá data na COM port

Příspěvek od fulda »

Nebo by jsi se musel podívat na začátek tohoto vlákna, kde se píše o magickém slově VBA a jeho použití v outlooku.
Prostě si uděláš VBA makro, které použiješ jako filtr.
V podstatě to nebude o moc jiné, než tvoje volání dávky, rozdíl bude v tom, že použiješ přímo prostředky outlooku a nebudeš do sebe muset matlat několik interpretrů. Prostě to bude takové systematické, jako když to tvoří běloši a ne arduino slepené tavnou pistolí na indickém webu.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: outlook posílá data na COM port

Příspěvek od Dex »

Každý Exchange včetně toho v Office 365 má IMAP konektor, stačí ho nemít vypnutý.

Btw pokud by to podle tohoto řešil ještě někdo jiný, tak v "opravdovém korporátu" s alespoň běžnou úrovní zabezpečení Vám většina výše popsaných praktik (nepodepsané .exe, pravidla v Outlooku volající externí programy, atd. atd.) fungovat nebude ;)
"all your robots are belong to us"
robodoupe.cz
aladin
Příspěvky: 337
Registrován: 12 kvě 2013, 06:43

Re: outlook posílá data na COM port

Příspěvek od aladin »

Dex> máš samosebou s bezpečností pravdu. Na druhou stranu nekteré věci občas jdou.
fulda> pokud chci něco jednoduchého a zeptám se přímo v názvu, tak 2 řádky v .bat mi přijde podstatně jednodušší než se patlat s VBA
fischertip.cz, Stavebnice.com, MerkurRobot.cz, KlubTechniku.cz
Odpovědět