Anonymní profil Anonymní uživatel – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Anonymní uživatel – Programujte.comAnonymní profil Anonymní uživatel – Programujte.com

 

Příspěvky odeslané z IP adresy 89.24.196.–

.NET › Formátování textboxu
4. 5. 2012   #157330

#6 Slim
Není zač, rád jsem pomohl.

Java › Server - Klient nemohou se s…
4. 5. 2012   #157329

#4 ingiraxo
Port 80 a 8080 je v některých firewallech často blokován. Možná bych se spíše podíval na to, co napsal KIIV, zda server naslouchá jakožto "localhost" a nebo pod konkrétní IP adresou. Pokud se nepletu, tak zrovna TcpListener v tomhle dělá rozdíly (už je to nějaký ten pátek, co jsem si s tím hrál)

Java › Server - Klient nemohou se s…
4. 5. 2012   #157328

#5 zlz
Když počká pár dnů, tak bude úplněk  

.NET › Čekání na konec aplikace kvů…
2. 5. 2012   #157250

Hmm, tak problém se opět objevil, ale tentokrát úplně někde jinde.

this.Invoke(myDelegateInputsReceived);

V tomto kroku to opět čeká a i když je tam podmínka, že myDelegateInputsReceived nesmí být null, tak mi to hlásí, že jeho hodnota je null.

.NET › Čekání na konec aplikace kvů…
2. 5. 2012   #157248

#1 DragonBehemont
Díky tomu popisu, že dané vlákno je uspáno nebo čeká na ukončení jiného vlákna mne napadlo, že to může být tím příjmem dat pomocí eventu, tak jsem do eventu přidal následující podmínky.

            try
            {
                if ((this != null) && (myDelegateInputsReceived != null))
                {
                    if (this.Controls.Count > 0)
                    {
                        this.Invoke(myDelegateInputsReceived);
                    }
                    else
                    {
                        beckhoffPort.DiscardInBuffer();
                    }
                }
                else
                {
                    beckhoffPort.DiscardInBuffer();
                }
            }
            catch
            {

            }

Toto jsem udělal u všech eventů pro COM porty. Od té doby se tato chyba zatím neprojevila.

.NET › Čekání na konec aplikace kvů…
2. 5. 2012   #157247

#1 DragonBehemont
Jen pro doplnění:

1.) Stejný problém se projevuje i na ostatních COM portech

2.) Když se ve VS podívám, kde zrovna program čeká, tak mi to hlásí, že čeká v kroku, kde se uzavírá port.

3.) Když se podívám na stav portu, tak mi VS ve watch tabulce hlásí: "Cannot evaluate expression because the current thread is in a sleep, wait, or join"

4.) Pro příjem dat využívám event DataReceived

OS - GNU / Linux › problém s ubuntu
3. 7. 2011   #143702

To Smrtelnik : Nabootovat znamená to, že si vypálíš ten image (iso soubor, která sis stáhl) na CD/DVD a při spuštění jej vložíš do mechaniky (nebo před vypnutím PC) ... a díky tomu se Ti nespustí Windows, ale bootovací médium ... a pokud ne, tak pak stačí přehodit v BIOS-u pořadí pro bootování

PHP › rozumí někdo odesilacímu scr…
3. 7. 2011   #143701
Offtopic › Komunikace s SQL
3. 7. 2011   #143677

Zdravím,
nebyl jsem si jist, kam toto téma přesně zařadit, tak bych chtěl předně požádat moderátory, aby ho případně zařadili dle svého uvážení.

Řeším jeden problém a to obecnou komunikaci s SQL databází. Jedná se mi o to, že bych potřeboval doporučit nějaký článek, případně specifikaci ohledně samotné komunikace s databází bez využití knihoven přímo od "výrobce" databáze. Nebo-li otázka přesněji zní, zda se dá komunikovat s databází pouze za použití socketové komunikace, bez nějakých knihoven a driverů (ODBC, atd.) a jestli existuje veřejně dostupná návod nebo specifikace ohledně protokolu.

Důvod mého dotazu je jednoduchý, řekněme, že mám PC, kde není možno využít žádný "vyšší" kompilovaný jazyk, žádné C++, ani C#, ani Pascal, nic. Jediné, v čem se dá psát program pro toto PC je v podstatě Assembler, který obsahuje funkce pro obsluhu TCP/IP spojení. (Pozn.: onen programovací jazyk není přímo Assembler, ale je mu hodně podobný) . Neznáte někdo články o této problematice? Zkoušel jsem hledat, ale výdycky mě to odkázalo na knihovny a drivery, nenašel jsem žádný návod, který by obsahoval to, co potřebuji.

C / C++ › Pointery a padání aplikace
20. 6. 2011   #143322

To nervak : nevím, zda jsi tím myslel to, že jsem tam omylem přehozil argumenty, ale i když jsem to přehodil tak, jak by to mělo být, tak to stejně padá. A nebo si tím myslel něco konkrítního?

Offtopic › Novelizace zákona o loteriích
20. 6. 2011   #143321

To KIIV : a nebo přijdou s dalším tld, kde budou prozměnu všechny stránky, kterí obsahují nelegální obsah ;-)

Offtopic › Novelizace zákona o loteriích
20. 6. 2011   #143317

To z_moravec : Asi nikdo moc neřešil, jak to zajistit v praxi ...

C / C++ › stream reader c#
20. 6. 2011   #143316

To Martin : a nebo můžeš zkusit tohle: http://www.vbnet.cz/clanek--72-pracujeme_s_protokolem_http.aspx

C / C++ › Pointery a padání aplikace
20. 6. 2011   #143315

Zdravím,

potřeboval bych poradit ohledně jednoho problému s pointry. Mám DLL knihovnu v C++, kde pomocí pointrů komunikuji a předávám data do aplikace. Jakmile aplikace zasílá data do knihovny, je všecko OK, dokonce i když vyčítá data, tak všecko běží tak jak má, ale jakmile se vlákno pokusí něco zapsat, tak celá aplikace spadne. Snažil jsem se něco najít na googlu, přímo na stránkách C++ i v literatuře, ale nic z toho co jsem našel nevyřešilo můj problém.

U této funkce všechno funguje tak jak má:



__declspec(dllexport) void __cdecl GetInput( HANDLE hDriver,
unsigned ChannelNumber,
TValue *InputValue )
{
//vrací stav kanálu
TextWriter^ streamWriter = gcnew StreamWriter( "furness_log.txt", true );
streamWriter->WriteLine( "Volání funkce: GetInput()" );
streamWriter->Flush();
streamWriter->Close();

TPDriver PDriver;
PDriver = (TPDriver) hDriver;
TPChannel PChannel;

PChannel = &(PDriver->Channels[ChannelNumber]);


EnterCriticalSection( &PDriver->DataCS );
switch(ChannelNumber) {
case 1:
InputValue->ValShortCard = PChannel->ChanelValue.ValShortCard;
break;

case 2:
InputValue->ValCardinal = PChannel->ChanelValue.ValCardinal;
break;

case 3:
InputValue->ValPString = PChannel->ChanelValue.ValPString;
break;
}
LeaveCriticalSection( &PDriver->DataCS );

};


Jenže u téhle funkce (vyzkoušel jsem snad všechny možnosti úprav) mi to padá


unsigned long __stdcall ThreadProc( TPDriver PDriver )
{
MSG msg;
System::IO::Ports::SerialPort _seriak;
_seriak.PortName = "COM" + PDriver->ComPort.ToString();
_seriak.ReadTimeout = 1000;
TPChannel PChannel1= &(PDriver->Channels[1]);
TPChannel PChannel2 = &(PDriver->Channels[2]);
TPChannel PChannel3 = &(PDriver->Channels[3]);

PeekMessage( &msg, 0, 0, 0, PM_REMOVE ); // create thread queue

SetEvent( PDriver->HThreadRunning );
try
{
_seriak.Open();
}
catch (Exception^ ex)
{

PChannel1->ChanelValue.ValShortCard = statusNoConnect;
PChannel2->ChanelValue.ValCardinal = 0;
strcpy("Během připojování došlo k neznámé chybě", (char *)PChannel3->ChanelValue.ValPString);

PDriver->DriverCallBack( PDriver->DriverCallBackHandle, dcfDriverException, 0 );
}
}


Ještě doplním jednotlivé definice:


struct TValue { // Value storage
struct {
unsigned Type;
union { // switch (Type)
char ValBoolean; // vtBoolean
unsigned char ValShortCard; // vtShortCard
unsigned short ValCardinal; // vtCardinal
unsigned ValLongCard; // vtLongCard
signed char ValShortInt; // vtShortInt
signed short ValInteger; // vtInteger
signed ValLongInt; // vtLongInt
float ValReal; // vtReal
double ValLongReal; // vtLongReal
tString255 *ValPString; // vtPString
struct { // vtDriverString
unsigned StringCharLength;
void *PString;
};
struct { // vtBuffer
unsigned char BType;
unsigned short BLen256;
void *PBuffer;
};
};
};
};

// chanel data structures
struct TChannel {
unsigned long Status;
double LastTime;
double ActualTime;
double Delay;
TValue ChanelValue;
double RangeFrom;
double RangeTo;
};
typedef TChannel *TPChannel;

// driver data structures
struct TDriver {
// common data
unsigned DataLength;
unsigned (__cdecl *DriverCallBack)(HANDLE, unsigned, void *);
HANDLE DriverCallBackHandle;
char ParamFileName[260];
int ComPort;
int BaudRate;
int Parity;
int DataBits;
int StopBits;

// private data
TChannel Channels[maxDriverChannels];
HANDLE HThread;
unsigned long IdThread;
HANDLE HThreadRunning;
CRITICAL_SECTION DataCS;
};
typedef TDriver *TPDriver;


Pokud je sériový port volný, tak ho otevře a bez problému s ním pracuje, jenže jakmile sériový port otevřu v jiné aplikaci, a pak se jej snažím otevřít v této knihovně, tak se to právě pokusí zapsat důvod neotevření portu a zápis do paměti přes pointry.

Jen pro upřesnění, důvodem, proč využívám v C++ .NET Framework je ten, že daleko déle pracuji s C# a jsem tudíž na .NET zvyklý. Pokud ale znáte lepší způsob, jak třeba používat sériový port, rád se poučím.

Předem děkuji za všechny náměty.

Anonymní uživatel
Offtopic › Novelizace zákona o loteriích
20. 6. 2011   #143310

Nějakou dobu už nesleduju zprávy ani média. O co se konkrétně jedná?

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý