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
Author: Robert Sadza
Date: Wed, 11 Jul 2012 09:55
Date: Wed, 11 Jul 2012 09:55
12 lines
1538 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 11 Jul 2012 11:51
Date: Wed, 11 Jul 2012 11:51
25 lines
1735 bytes
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
Author: Robert Sadza
Date: Wed, 11 Jul 2012 12:31
Date: Wed, 11 Jul 2012 12:31
11 lines
1388 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 11 Jul 2012 14:46
Date: Wed, 11 Jul 2012 14:46
46 lines
2564 bytes
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
Author: Robert Sadza
Date: Thu, 12 Jul 2012 07:34
Date: Thu, 12 Jul 2012 07:34
49 lines
2941 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 12 Jul 2012 08:19
Date: Thu, 12 Jul 2012 08:19
18 lines
1690 bytes
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
Author: skynet
Date: Thu, 12 Jul 2012 12:54
Date: Thu, 12 Jul 2012 12:54
28 lines
2123 bytes
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