🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
7 messages
7 total messages Started by Robert Sadza Wed, 11 Jul 2012 09:55
Linia DTR w RS232
#22400
Author: Robert Sadza
Date: Wed, 11 Jul 2012 09:55
12 lines
1538 bytes
Witam,
mam następujący problem do komunikacji z urządzeniem używam klasy 
SerialPort. urządzenie pracuje w trybie: prędkość 9600 1 bit startu , 8 
bitów danych , 1 bit stopu bez sterowania sprzętowego. Problem występuje 
w momencie otwarcia portu, ponieważ otwarcie powoduje zmianę stanu na 
lini DTR a zmiana stanu na tej lini powoduje restart urządzenia i muszę 
jeszcze raz włączać urządzenie aby zacząć się z nim komunikować, czy 
istnieje możliwość otwarcia portu niepowodująca zmiany stanu na lini 
DTR? (program tworzony jest w VS 2010 WPF c#) Z góry dziękuje za pomoc.

Pozdrawiam
RS
Re: Linia DTR w RS232
#22401
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 11 Jul 2012 11:51
25 lines
1735 bytes
On Wed, 11 Jul 2012 11:55:41 +0200, Robert Sadza wrote:

> Witam,
> mam następujący problem do komunikacji z urządzeniem używam klasy 
> SerialPort. urządzenie pracuje w trybie: prędkość 9600 1 bit startu , 8 
> bitów danych , 1 bit stopu bez sterowania sprzętowego. Problem występuje 
> w momencie otwarcia portu, ponieważ otwarcie powoduje zmianę stanu na 
> lini DTR a zmiana stanu na tej lini powoduje restart urządzenia i muszę 
> jeszcze raz włączać urządzenie aby zacząć się z nim komunikować, czy 
> istnieje możliwość otwarcia portu niepowodująca zmiany stanu na lini 
> DTR? (program tworzony jest w VS 2010 WPF c#) Z góry dziękuje za pomoc.
> 
> Pozdrawiam
> RS

Czy:
serialPort.DtrEnable = false;
nie jest wystarczające?

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.dtrenable.aspx


-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: Linia DTR w RS232
#22402
Author: Robert Sadza
Date: Wed, 11 Jul 2012 12:31
11 lines
1388 bytes
> Czy:
> serialPort.DtrEnable = false;
> nie jest wystarczające?
>
> http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.dtrenable.aspx
>
>

niestety nie ponieważ zmian stanu lini DTR występuje w momencie 
wywołania serialPort.Open()
Re: Linia DTR w RS232
#22403
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 11 Jul 2012 14:46
46 lines
2564 bytes
On Wed, 11 Jul 2012 14:31:55 +0200, Robert Sadza wrote:
> niestety nie ponieważ zmian stanu lini DTR występuje w momencie 
> wywołania serialPort.Open()

Zejdźmy głębiej w takim razie.

Zgodnie z:
http://msdn.microsoft.com/en-us/library/ms810467.aspx
(Ctrl-F "fRtsControl")
Flagi które tym sterują są w strukturze DCB we flagsach...
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx
Na bitach 5-6.

Ale teraz, z kolei, po przejechaniu Reflectorem przez 
źródła frameworka:

private void InitializeDCB(int baudRate, Parity parity, 
               int dataBits, StopBits stopBits, 
               bool discardNull)
{
    // <snip>
    this.SetDcbFlag(1, (parity == Parity.None) ? 0 : 1);
    this.SetDcbFlag(0, 1);
    this.SetDcbFlag(2, ...);
    this.SetDcbFlag(3, 0);
    this.SetDcbFlag(4, 0); // *
    this.SetDcbFlag(6, 0);
    // <snip>

Flaga 5 jest ustawiona na 0, czyli na:

DTR_CONTROL_DISABLE
0x00	
Disables the DTR line when the device is opened 
and leaves it disabled.

I taki DCB idzie do SetCommState, bez możliwości
zmiany flag bo klasycznie: Microsoft nie dał niczego 
jako protected virtual, wszystko jest internal sealed, 
więc albo czeka Cię ciężkie hackowanie albo użycie 
zewnętrznej biblioteki do RS232 albo bezpośrednie 
opakowanie wszystkiego samemu w P/Invoke.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: Linia DTR w RS232
#22404
Author: Robert Sadza
Date: Thu, 12 Jul 2012 07:34
49 lines
2941 bytes
W dniu 2012-07-11 16:46, Łukasz 'Maly' Ostrowski pisze:
> On Wed, 11 Jul 2012 14:31:55 +0200, Robert Sadza wrote:
>> niestety nie ponieważ zmian stanu lini DTR występuje w momencie
>> wywołania serialPort.Open()
>
> Zejdźmy głębiej w takim razie.
>
> Zgodnie z:
> http://msdn.microsoft.com/en-us/library/ms810467.aspx
> (Ctrl-F "fRtsControl")
> Flagi które tym sterują są w strukturze DCB we flagsach...
> http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx
> Na bitach 5-6.
>
> Ale teraz, z kolei, po przejechaniu Reflectorem przez
> źródła frameworka:
>
> private void InitializeDCB(int baudRate, Parity parity,
>                 int dataBits, StopBits stopBits,
>                 bool discardNull)
> {
>      // <snip>
>      this.SetDcbFlag(1, (parity == Parity.None) ? 0 : 1);
>      this.SetDcbFlag(0, 1);
>      this.SetDcbFlag(2, ...);
>      this.SetDcbFlag(3, 0);
>      this.SetDcbFlag(4, 0); // *
>      this.SetDcbFlag(6, 0);
>      // <snip>
>
> Flaga 5 jest ustawiona na 0, czyli na:
>
> DTR_CONTROL_DISABLE
> 0x00	
> Disables the DTR line when the device is opened
> and leaves it disabled.
>
> I taki DCB idzie do SetCommState, bez możliwości
> zmiany flag bo klasycznie: Microsoft nie dał niczego
> jako protected virtual, wszystko jest internal sealed,
> więc albo czeka Cię ciężkie hackowanie albo użycie
> zewnętrznej biblioteki do RS232 albo bezpośrednie
> opakowanie wszystkiego samemu w P/Invoke.
>
Dziękuje za informacje.
Odnośnie struktury DCB używałem jej kilka lat temu pisząc oprogramowanie 
w Builder c++ 6.0 i niestety ustawienie dcb.fDtrControl = 
DTR_CONTROL_DISABLE nic nie zmieniało w momencie otwarcia portu 
występowała zmiana stanu linii DTR.
Re: Linia DTR w RS232
#22405
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 12 Jul 2012 08:19
18 lines
1690 bytes
On Thu, 12 Jul 2012 09:34:00 +0200, Robert Sadza wrote:
> Dziękuje za informacje.
> Odnośnie struktury DCB używałem jej kilka lat temu pisząc oprogramowanie 
> w Builder c++ 6.0 i niestety ustawienie dcb.fDtrControl = 
> DTR_CONTROL_DISABLE nic nie zmieniało w momencie otwarcia portu 
> występowała zmiana stanu linii DTR.

Czyli zapewne jeszcze niżej jest podejmowana decyzja,
czyli driver, ew. kontroler i w ring3 niestety nic 
Kolega nie poradzi.

Zawsze zostaje rozwiązanie hardwarowe i "odpowiednie
spreparowanie kabla" jeżeli statyczny DTR jest 
wystarczający ;-). Ale to już nie mój teren ekspertyzy.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: Linia DTR w RS232
#22406
Author: skynet
Date: Thu, 12 Jul 2012 12:54
28 lines
2123 bytes
Witam,

Dokładanie jest to 4 PIN we wtyczce 9 Pinowej w 25 będzie to 20 PIN

Pozdrawiam
Robi

Użytkownik "Łukasz'Maly' Ostrowski"  napisał w wiadomości grup 
dyskusyjnych:fnpb8ktkzcwx.rlzy9zmbw6om$.dlg@40tude.net...

On Thu, 12 Jul 2012 09:34:00 +0200, Robert Sadza wrote:
> Dziękuje za informacje.
> Odnośnie struktury DCB używałem jej kilka lat temu pisząc oprogramowanie
> w Builder c++ 6.0 i niestety ustawienie dcb.fDtrControl =
> DTR_CONTROL_DISABLE nic nie zmieniało w momencie otwarcia portu
> występowała zmiana stanu linii DTR.

Czyli zapewne jeszcze niżej jest podejmowana decyzja, w
czyli driver, ew. kontroler i w ring3 niestety nic
Kolega nie poradzi.

Zawsze zostaje rozwiązanie hardwarowe i "odpowiednie
spreparowanie kabla" jeżeli statyczny DTR jest
wystarczający ;-). Ale to już nie mój teren ekspertyzy.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/ 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads