[C#] Een com port 2 keer openen.

Pagina: 1
Acties:

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Hallo,

Ik probeer een applicatie te maken, maar ik loop nu tegen een groot probleem aan.

Ik probeer data uit te lezen en in te voeren in een applicatie met behulp van een seriele poort.
Deze applicatie opent deze seriele poort en dan wil ik hem ook nog een keer openen.
Dit staat windows helaas niet toe.

Ik zoek dus een manier om dit te omzeilen.
Ik heb al zitten te google-en en daar kwam eigelijk de virtuele compoort uit, alleen zijn er helaas geen gratis oplossingen hiervoor, alleen duur betaalde software/api's.

Het liefste wil ik het er ook in intergreren. Niet dat je er nog een programma'tje naast moet draaien.

Hebben jullie nog ideeen ?

Portfolio


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Zelf een driver schrijven? Ik ben bang dat je het op moet geven als je geen gratis alternatief vindt.

We adore chaos because we like to restore order - M.C. Escher


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik weet niet precies hoe je dat voor je ziet. Maar een com poort is maar een poort waar je maar via een manier data naar toe kan schrijven. Als je toch vanaf verschillende bronnen naar de compoort wilt schrijven dan zou je een eigen programma de com poort kunnen laten openen en dat programma dan via tcp/ip oid verbindingen laten accepteren en die data naar de com poort schrijven. Maar dan zul je wel rekening moeten houden met programma's die bijvoorbeeld tegelijkertijd data willen schrijven.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Je hebt zat van die programmatjes die je comport kopieren, dan heb je je normale com1, en dan een gesimuleerde com2. Dan kan je je eigen progje op com2 laten lezen terwijl toch de data van com1 erover gaat,

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

Waarom wil je je com poort twee keer openen? Dat windows het niet toelaat is niet voor niks.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • victorv
  • Registratie: Januari 2002
  • Laatst online: 17-02-2024

victorv

Locallost

Even afgezien van waarom je het programma tweemaal wilt opstarten.

Een com poort kun je maar 1x openen. Een mogelijke manier om meer dan 1x een com poort te "openen" is de com poort te laten beheren door een tweede programma ("COM Beheerder") die de requests afhandelt voor jouw orginele programma. De COM beheerder handelt dan het COM verkeer af voor meerdere afnemers (jouw orginele programma).
Implementatie zou je kunnen doen via .NET remoting waarbij het target object een singleton pattern implementeert (zodat de com poort slechts 1 keer wordt geopend, maar wel meerdere programma's gebruik kunnen maken van de poort data).

Succes.

"Accomplishing the impossible means only that the boss will add it to your regular duties."


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 17:22
Of je zou heel ouderwets een tweede fysieke com-poort kunnen gebruiken. Knoop het gewenste signaaldraadje (tx/rx van sender/receiver) aan op de rx van die com-poort. Dit is wel het meest simpele. D'r zijn vast wel ergens schema's te vinden.

  • Bergie
  • Registratie: Augustus 2000
  • Laatst online: 29-11 09:33

Bergie

Lekker belangrijk...

Waarom wil je überhaupt een com poort openen die je zelf net geopend hebt? Ik snap niet echt goed wat je daarmee wilt bereiken.
Zou je dat even wat nader kunnen toelichten?

Yamaha MT-09


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Janoz schreef op zondag 31 december 2006 @ 21:14:
Waarom wil je je com poort twee keer openen? Dat windows het niet toelaat is niet voor niks.
En waarom is dat dan? In Linux bijvoorbeeld kan het wel.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10 00:17
farlane schreef op maandag 01 januari 2007 @ 20:57:
[...]


En waarom is dat dan? In Linux bijvoorbeeld kan het wel.
In Linux kun je de /dev/tty bestanden meerdere keren openen, dat zijn dacht ik character devices die aangemaakt worden door een kernel module.
Meerdere kernel modules die tegelijk gebruik maken van dezelfde seriele poort is volgens mij niet mogelijk.

In een C# programma dezelfde seriele poort meerdere keren openen hoeft trouwens ook nergens voor nodig te zijn, ik kan me ook niet zo bedenken waarom je dat zou willen doen.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
bobo1on1 schreef op dinsdag 02 januari 2007 @ 15:28:
Meerdere kernel modules die tegelijk gebruik maken van dezelfde seriele poort is volgens mij niet mogelijk.

In een C# programma dezelfde seriele poort meerdere keren openen hoeft trouwens ook nergens voor nodig te zijn, ik kan me ook niet zo bedenken waarom je dat zou willen doen.
TS wil ook geen kernel module (driver) schrijven voor de com poort, hij wil met 2 verschillende applicaties bij dezelfde COM poort.

De reden dat je dat zou willen doen is bijvoorbeeld omdat je 2 master applicaties op je systeem hebt draaien die van je multidrop 485 netwerk gebruik maken.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10 00:17
Ik begreep uit de tekst dat hij de com poort 2 maal wilde openen vanuit hetzelfde programma, het staat niet expliciet vermeld dat het vanuit verschillende programma's moet.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
bobo1on1 schreef op woensdag 03 januari 2007 @ 14:26:
Ik begreep uit de tekst dat hij de com poort 2 maal wilde openen vanuit hetzelfde programma, het staat niet expliciet vermeld dat het vanuit verschillende programma's moet.
Komt op hetzelfde neer toch?

[edit]
Hmmm komt niet op hetzelfde neer, maar als je het vanuit een programma zou willen lijkt het me dat je niet echt handig bezig bent want je hebt de data al dus waarom zou je die data niet delen door de 2 'processen'?

Ik had aangenomen dat de ene applicatie de data gebruikt en dat hij wil meekijken met een andere applicatie. ( soort protocol analyzer dus )

[ Voor 37% gewijzigd door farlane op 03-01-2007 14:57 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Ik kan me voorstellen dat de TS een com-port 2x wil openen, bijvoorbeeld via de com-poort een commando geven (commando:start!) , zodat programma X en Y beide actief worden. Maar de beste oplossing lijkt me zoals al eerder gezegt dat programma Z de compoort opent en dan de data doorgeeft... de meeste (stomme) simpele manier zou zijn.. schrijf de compoort data naar een bestandje en laat X en Y elke 15s dat bestandje lezen

(inefficient, ineffectief, lage reactie snelheid (natuurlijk kan 15s ook 0.1sec worden) en vreet hardeschijf activiteit terwijl het niet nodig is, maar op deze manier hoef je niks te weten van communicatie tussen 2 programma's e.d.)

~ Mijn prog blog!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
therat10430 schreef op woensdag 03 januari 2007 @ 16:11:
<snip>
Maar de beste oplossing lijkt me zoals al eerder gezegt dat programma Z de compoort opent en dan de data doorgeeft... de meeste (stomme) simpele manier zou zijn.. schrijf de compoort data naar een bestandje en laat X en Y elke 15s dat bestandje lezen
</snip>
Ga dan op z'n minst voor een fatsoenlijke variant van IPC :X

[ Voor 10% gewijzigd door RobIII op 03-01-2007 16:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1