تبليغاتX
روباتیک وبرنامه نویسی

Streams

In order to provide similar programmatic interfaces to the broad range of I/O

devices with which a programmer has to contend, a stream-based architecture

was developed in .NET. I/O devices can be anything from printers to

hard disks to network interfaces.

Not all devices support the same functions. For example, it is possible

to read only the second half of a 1-Mb file, but not possible to download

only the second half of a Web page. Therefore, not all streams support the

same methods.

Properties such as

canRead()

,

canSeek()

, and

canWrite()

indicate the

capabilities of the stream when applied to a particular device           

The most important stream in the context of this book is the

network-

Stream

, but another important stream is

fileStream

, which is used extensively

throughout this book to demonstrate file transfers over networks.

Streams can be used in two ways: asynchronously or synchronously.

When using a stream synchronously, upon calling a method, the thread will

halt until the operation is complete or fails. When using a stream asynchronously,

the thread will return from the method call immediately, and whenever

the operation is complete, a method will be called to signify the

completion of the operation, or some other event, such as I/O failure.

It is not user friendly to have a program “hang” when it is waiting for an

operation to complete. Therefore, synchronous method calls must be used

in a separate thread.

Through the use of threads and synchronous method calls, computers

achieve the illusion of being able to do several things at once. In reality,

most computers have only one central processing unit (CPU), and the illusion

is achieved by quickly switching between tasks every few milliseconds.

The following application illustrates the two techniques. The code in

this book will tend toward using synchronous streams, but it is important

to be able to recognize and understand asynchronous streams.

This code requires a little explanation. First, the magic number, 4096, is

simply a performance characteristic because it is quicker to transfer data

from disks in 4-Kb chunks than 1 byte at a time.

The final parameter in the

FileStream

constructor indicates whether

the operation is to be completed asynchronously or synchronously.

The most important thing to note is that there is no reference to

tbResults;

this implies that some other function must handle the data once

the read is complete. The

AsyncCallback

constructor refers to another function,

which is also referenced in the

BeginRead

method, so this must be it.

As you can see from the code, the

fs_StateChanged

function has not yet

been implemented. This function is called whenever the file is finished

reading.

Note:

Synchronous use of

FileStream

is more efficient when the file size is

less than 64 Kb and the file is located on the local machine.                                           

This code doesn’t perform any file handling; instead, it creates a new

thread, whose entry point is the

syncRead

function. When this thread runs,

it does so in parallel with any other code that is running at the same time,

which includes the background operating system (OS) “housekeeping”

(Windows message handling) functions.

If the code above were replaced by a simple call to

syncRead()

, the program

would still operate; however, if the file happened to be several

gigabytes in size, the user would quickly perceive the application to be

“hung.” A hung application is notably nonresponsive and may turn white

when dragged behind another application. What is actually happening is

that the main thread of application is taking 100% processor time and

does not give the OS time to handle simple tasks such as redrawing the

user interface.

In certain time-critical applications, it may be necessary to take 100%

processor time, but any application with a user interface should remain

responsive at all times.

The next task is to implement the

syncRead

function:                                                                                                             

In the above code, you will notice that the

FileStream

constructor is

enclosed in a

try/catch

block. This allows the program to recover gracefully

from problems such as a missing file or an unreadable disk. In realworld

applications, any operation that relies on the existence of files or network

resources should be contained within a

try/catch

block. This allows

programs to continue execution, even if something unexpected happens. In

most examples throughout this book,

try/catch

blocks are not used in

order to keep the examples concise and readable.

Three namespaces must be included in the code as follows:

Note:

The most concise way to read text files (under 1 Gb) is:

(new StreamReader(filename)).ReadToEnd();

                  

+ نوشته شده در پنجشنبه نوزدهم آذر 1388ساعت 23:21 توسط حسین |

ترفند ها برنامه نویسی در VB.Net

Hibernate و Standby کردن کامپیوتر

' Hibernate
        Application.SetSuspendState(PowerState.Hibernate, True, True)

        '// Standby
        Application.SetSuspendState(PowerState.Suspend, True, True)

شفاف کردن پشت زمینه ی کنترلها

control.BackColor = Color.FromArgb(trancparency, control.BackColor)

بستن یک پروسه در حال اجرا

System.Diagnostics.Process.Start("TaskKill", "/f /im Notepad.exe /t")

بدست آوردن مسیر دایرکتوری جاری برنامه

MessageBox.Show(Application.StartupPath)

+ نوشته شده در چهارشنبه سی و یکم تیر 1388ساعت 12:45 توسط حسین |

برنامه نويسي تحت شبكه محلي در vb.net
اشاره :
يكي از نياز هاي برنامه نويسان در نوشتن برنامه هاي حرفه اي و چند كاربره ، انتقال داده ها بين دو يا چند كامپيوتر كه از طريق LAN و يا از طريق WAN( اينترنت ) با هم در ارتباط هستند مي باشد.چنين امكاني از ابتدايي ترين زبان ها برنامه نويسي تا كنون به اشكال مختلف در اختيار برنامه نويسان قرار گرفته است و سير سهولت در ايجاد ارتباط در بين كامپيوتر ها روز به روز افزايش يافته است بطوريكه اكنون يك برنامه نويس متوسط نيز مي تواند چنين برنامه هايي را بنويسد. برنامه هايي چون ويديو كنفرانس ، بازي هاي تحت شبكه و چت نمونه هايي از اينگونه برنامه ها مي باشد. در اين مقاله سعي شده است اصول ابتدايي اينگونه برنامه ها تشريح شود. پيش نياز استفاده از مطالب اين مقاله آشنايي متوسط به زبان VB.NET و برخي مفاهيم كلي شبكه مي باشد.كاربران زبان C# نيز مي توانند از كليه مطالب اين مقاله استفاده كنند.



روند ارائه اين مقاله بدين شكل خواهد بود:

• انواع مدل هاي شبكه اي، براي برنامه نويسي تحت شبكه
• ابزار هاي .Net براي برنامه نويسي تحت شبكه
• يك برنامه ارسال و دريافت پيام تحت شبكه محلي

پس از اتمام اين مقاله شما توانايي هاي زير را خواهيد داشت :

• آشنايي با برخي از انواع استراتژي هاي موجود براي برنامه نويسي تحت شبكه
• آشنايي با برخي از Class ها و توابع مورد نياز براي برقراري ارتباط بين كامپيوتر ها
• توان ارتباط بين دو كامپيوتر و رد وبدل داده بين آن دو

انواع مدل هاي شبكه اي، براي برنامه نويسي تحت شبكه
منظور از انواع مدل هاي برنامه نويسي تحت شبكه اين است كه چگونه كامپيوتر‌هاي موجود در يك شبكه را در برنامه خود شناسايي كنيم و با آنها ارتباط برقرار كنيم.
در ذيل سه مدل از انواع مشهور آن تشريح شده است:

1ـ سرور(Server) ثابت مركزي و انتقال داده بين كلاينت ها (Clients) از طريق سرور مركزي
همانطور در شكل 1 نشان داده شده است در اين مدل هيچ يك از كامپيوتر‌ها با هم مستقيما در ارتباط نيستند و به همين دليل نيازي به شناسايي ديگر كامپيوتر‌ها در شبكه ندارند. انتقال داده بين كامپيوتر‌ها از طريق سرور مركزي شناخته شده در شبكه انجام مي‌گيرد .هر كامپيوتري به محض ورود به شبكه خود را به سرور مركزي معرفي مي‌كند و ليست ساير كامپيوتر ها را از سرور مركزي دريافت مي‌كند و چنانچه بخواهد داده اي را به ديگر كامپيوتر ها ارسال كند آن را به سرور تحويل داده و وظيفه نهايي تحويل داده به كامپيوتر مقصد به عهده سرور مركزي مي‌باشد و چنانچه داده اي از طرف ساير كامپيوتر ها در شبكه برايش ارسال گردد مي تواند آن را از سرور در خواست كند.


شكل 1



برخي از مزاياي اين مدل:

• نياز به الگوريتمي براي شناسايي ديگر كامپيوتر‌ها نداريم.

• به دليل وجود سرور مركزي قابليت ثبت و پيگيري كليه داده هاي ارسالي بين كامپيوتر ها را دارا مي‌باشد.

• قابليت ذخيره و بعد ارسال، براي اطمينان از دريافت داده توسط كامپيوتر مورد نظر را دارا مي‌باشد.

• تعداد خطوط ارتباطي بين كامپيوتر ها به حداقل مي‌رسد.

برخي از معايب اين مدل:

• در صورت از كار افتادن سرور مركزي در حين عمليات ، كليه ارتباطات و داده ها از دست مي‌رود و عملا شبكه ارتباطي از بين خواهد رفت.

• بار كاري سرور مركزي بسيار بالا بوده و به همين دليل در شرايط يكسان سرعت انتقال داده ها كند تر از ساير روش ها خواهد بود
ادامه مطلب کلید کنید

ادامه مطلب
+ نوشته شده در چهارشنبه سی و یکم تیر 1388ساعت 12:39 توسط حسین |

ما دراين يادداشت به بررسي فايلهاي ترتيبي در VB.NET مي پردازيم.
 درواقع فايل ها را ازنظر ساختاربه دوقسمت تقسيم مي كنيم:
1- فايلهاي ترتيبي
2- فايلهاي تصادفي
درفايل هاي ترتيبي ركوردها به همان ترتيبي كه ازورودي خوانده مي شوند درفايل قرارمي گيرند ودرهنگام خواندن فايل نيز بايد به همان ترتيبي كه ذخيره شده اند خوانده شوند.
اما درفايل هاي تصادفي مي توان به صورت مستقيم به ركوردي دسترسي پيداكرد وآنرا خواند.

نكته : درفايل ترتيبي امكان استفاده از ساختاروجود ندارد اين مورد درفايل تصادفي توضيح داده مي شود.

امادراين يادداشت  به بررسي فايل ترتيبي مي پردازيم وفايل تصادفي رابه يادداشتي ديگرموكول مي كنيم.
حال مي خواهيم ببينيم چگونه مي توان يك فايل ترتيبي ايجاد كرد اطلاعاتي درداخل آن نوشت آطلاعات آنرا خواند وهمچنين چگونه مي توان آن فايل را حذف كرد.
ايجادكردن ويابازكردن يك فايل ترتيبي:
براي ايجاد كردن ويا بازكردن يك فايل ترتيبي ازدستور FileOpen استفاده مي كنيم.
اين دستور سه آرگومان دريافت مي كند:
1- درآرگومان اول بايد يك شماره به فايل خوداختصاص دهيد وازاين به بعد با استفاده ازآن شماره مي توان اطلاعات درون فايل را

 خواند يا نوشت وهمچنين كارهاي ديگررا نيز با استفاده از آن شماره انجام

ادامه مطلب کلید کنید


ادامه مطلب
+ نوشته شده در چهارشنبه سی و یکم تیر 1388ساعت 12:33 توسط حسین |


Vb6 Portable / VB 6 Portable / ویژوال بیسیک قابل حمل
ویژوال بیسیک بدونه نیاز به نصب.

در این نسخه شما اجازه کمپایل رو ندارید ولی می تونید به راحتی سورسه پروژه هاتون رو نگاه کنید ، ویرایش کنید یا اجرا کنید !

مثله اینکه پرشین گیگ مشکل پیدا کرده ، به خاطر همین در دیو شیر اپلود کردم.

اگه دانلود براتون مشکل بود بگید یه جایه دیگه آپلود کنم.


دانلود غیر مستقیم - حجم 4.55 مگابایت
منبع:delphi-cpp.blogfa
+ نوشته شده در یکشنبه دوم فروردین 1388ساعت 12:20 توسط حسین |

تشخیص فشرده شدن کلیدهاي کیبرد
چگونه می توان کلیدهاي کیبرد را
حتی وقتی فوکوس روي برنامه ما نیست تشخیص داد مانند دیکشنري
ها که Keylogger فعال می شوند و یا CTRL+F ها که مثلاً با 12
کلیدهاي فشرده شده را ثبت می کنند .
من دو روش زیر را براي اینکار پیشنهاد می کنم :
GetAsyncKeyState 1 - استفاده از یک تابع کتابخانه اي به اسم
این تابع ، فشرده شدن یا رها شدن یک . user32.dll موجود در کتابخانه
کردن این تابع بصورت زیر declare کلید را تشخیص می دهد . نحوه
است :
Private Declare Function GetAsyncKeyState Lib "user32"
(ByVal vKey As Long) As Integer
آن کد زیر را قرار event قرار داده و در timer حال در برنامه تان یک
دهید :
For i = 1 To 255
results = 0

results = GetAsyncKeyState(i)
If results <> 0 Then
Msgbox(Chr(i))
End If
Next

ادامه مطلب کلید کنید


ادامه مطلب
+ نوشته شده در سه شنبه بیست و هفتم اسفند 1387ساعت 17:16 توسط حسین |

برنامه نویسی سخت افزار در ویژوال بیسیک
مقدمه
شاید تابحال خواسته باشید از طریق پورت پرینتر و یا پورت سریال یا
با سخت افزاري که خودتان ساخته اید ارتباط برقرار کنید . ISA باس
با I/O براي این کار شما نیاز به برنامه اي دارید که بوسیله دستورات
سخت افزار شما ارتباط برقرار کند . چون ویژوال بیسیک داراي
نیست بایستی توسط ویژوال سی یک I/O دستورات کار با پورتهاي
براي کار با این پورتها بسازیم . Dll


و کاربردهاي آن DLL
و INPUT برنامه نویسی کرده باشید با دستورات DOS اگر شما در
آشنا C در outp و inp و با دستورات QuickBasic در زبان OUPUT
پیاده سازي نشده اند . این توابع براي VB هستید . این توابع در
و نیز برنامه نویسان سیستم حیاتی PC سازندگان سخت افزار براي
هستند زیرا به شما اجازه خواندن از پورت و نوشتن به پورت را می
یا کتابخانه Dll باید از VB دهند . براي ایجاد امکان استفاده ار پورت در
اجازه می دهند تا یک کد VB ها به Dll . هاي دینامیک استفاده کنیم
نوشته شده به یک زبان دیگر را در زمان اجرا ( بطور دینامیک ) به
برنامه لینک شود . چون ویژوال سی داراي توابع خواندن و نوشتن
موردنظر استفاده Dll پورت است بنابراین ما از این زبان براي ساخت
می کنیم .
VC در DLL نوشتن
ما بایستی دو فایل را ایجاد کنیم . اولین فایل یک فایل Dll براي ساخت
می CPP یا source ++C است و دومین فایل ، یک فایل DEF یا define
ایجاد کنید . لیست کد Notepad باشد . هر دو فایل را می توانید توسط
این دو فایل بصورت زیر است :
: Port.def file
LIBRARY Port
DLL FOR I/O PORT DESCRIPTION
EXPORTS
Outp @1
Inp @2

: Port.cpp file
#include "conio.h"x
PortData)x short _stdcall Outp(int PortAddress,int
{
Dummy;x short
Dummy=(short)(_outp(PortAddress,PortData));x
return(Dummy);x
};
stdcall Inp(int PortAddress)x_ short
{
PortData;x short
PortData=(short)(_inp(PortAddress));x
return(PortData);x
};
پس از نوشتن این دو فایل آنها را در یک دایرکتوري قرار دهید ( مثلا مورد File و سپس وارد محیط ویژوال سی شوید . از منوي ( C:\port
Projects را انتخاب کنید و در کادري که ظاهر می شود در قسمت New
را انتخاب کنید . همچنین در Win32 Dynamic-Link Library مورد
را وارد port عبارت Project name سمت راست همان صفحه در کادر
را وارد کنید و آنگاه C:\port\port عبارت Location کنید و در کادر
را کلیک کنید . OK

!Error
ایجاد workspace را به cpp و def در مرحله بعدي بایستی فایل هاي
Port روي عبارت FileView شده اضافه کنیم . براي اینکار در برگه
را انتخاب کنید . Project Add Files to کلیک راست کرده و مورد files

را انتخاب کنید . با همین port.cpp در کادري که ظاهر می شود فایل
را نیز به پروژه اضافه نمائید . port.def روش فایل
dll را انتخاب کنید تا Build port.dll شده مورد Build حال وارد منوي
مورد نظر ساخته شود .

ویندوزتان کپی کنید . system ساخته شده را در دایرکتوري dll
در ویژوال بیسیک Dll استفاده از
را In و Out ساخته شده باید ابتدا توابع dll براي استفاده از توابع
کنید : declare
Private Declare Function Outp Lib “port.dll” (Byval
PortAddress as Integer,Byval PortData as Integer) as
Integer
Function Inp Lib “port.dll” (Byval Private Declare
PortAddress as Integer) as Integer
حال در برنامه تان براي نوشتن به یک پورت از دستور زیر استفاده
کنید :
Dummy=Outp(port_number,data)x
و براي خواندن از پورت از دستور زیر استفاده کنید :

Portvalue=Inp(port_number)x
در dll و یک برنامه نمونه استفاده از این port.dll نکته : براي دریافت
ویژوال بیسیک ، در بخش نظر خواهی آدرس ایمیل خود را بگذارید .
و برنامه نویسی آن در ویژوال بیسیک Parallel پورت
تذکر : در مقاله هاي قبلی بخشی تحت عنوان " برنامه نویسی سخت
افزار در ویژوال بیسیک " نوشتم که در آن روشی براي دسترسی به
پورتها از طریق ویژوال بیسیک ذکر شد . لازم به تذکر است که این روش
تنها در ویندوزهاي 95 و 98 امکان پذیر است .
( Parallel ) مبانی پورت موازي
پورت پارالل استاندارد کامپیوتر یک درگاه 25 پینی است که 12 پین آن
DATA ) خروجی می باشد . از این 12 خط ، 8 خط بعنوان داده خروجی
می باشند . 5 ( CONTROL Port ) و 4 خط بعنوان خط کنترل ( Port
( STATUS Port ) پین نیز ورودي بوده و بعنوان خطوط وضعیت
استفاده می شوند .
هستند . ( GROUND ) 8 پین باقیمانده نیز زمین
که هرکدام متناظر با یکی از I/O خطوط پورت پارالل توسط سه آدرس
سه پورت داده ، کنترل و و ضعیت است قابل دسترسی می باشند .
( LPT می باشد ( 1 x آدرس پایه پورت پارالل در اکثر کامپیوترها 3780
status براي پورت ، x براي پورت داده برابر 3780 I/O . بنابراین آدرس
می باشد . x37A برابر 0 command و براي پورت x برابر 3790

و ECP پورت پارالل استاندارد داراي دو حالت توسعه یافته به نامهاي
نیز می باشد . EPP
بوسیله پورت پارالل می توانید مدارهاي جانبی خود را به کامپیوتر
متصل کنید . تنها نکته اي که در این بین وجود دارد چگونگی برنامه
نویسی پورت پارالل و در نتیجه برقراري ارتباط با مدار جانبی است .
براي اطلاعات بیشتر در این زمینه با من تماس بگیرید .
برنامه نویسی پورت پارالل در محیطهاي مختلف ویندوز
می توان به dll با استفاده از این : Inpout32.dll استفاده از کتابخانه
دسترسی داشت Win 9x/NT/2000/XP پورتهاي سیستم در محیطهاي
.
dll به این آدرس مراجعه کنید . براي استفاده از این dll براي دریافت این
ویندوزتان کپی کنید . سپس System کافی است آنرا در دایرکتوري 32
یک ماژوال به پروژه تان اضافه کرده و عبارت زیرا را در آن قرار دهید :
Public Declare Function Inp Lib "inpout32.dll" Alias
Inp32" (ByVal PortAddress As Integer) As Integer"
inpout32.dll" Alias "Out32" " Public Declare Sub Out Lib
Integer)x (ByVal PortAddress As Integer, ByVal Value As
حال براي مثال با دستور زیر می توانید اطلاعاتی را روي پینهاي
ي مربوط به پورت پارالل بنویسید : DATA
H378, your_data)x&)Call Out

آشنایی با شی پرینتر در ویژوال بیسیک
آشنایی با شی پرینتر در ویژوال بیسیک 6
مقدمه
شی پرینتر ، شیی است که پرینتر پیش فرض سیستم را کنترل می کند .
استفاده از شی پرینتر در ویژوال بیسیک 6 مانند کار با سایر اشیا است
و بایستی از خواص و متدهاي آن استفاده کرد . در ادامه با برخی از این
خواص و متدها آشنا خواهید شد .

ادامه مطلب کلید کنید


ادامه مطلب
+ نوشته شده در سه شنبه بیست و هفتم اسفند 1387ساعت 17:9 توسط حسین |

نوع :  PDF    تعداد صفحه :81    حجم:520KB   دريافت فايل

بر گرفته از مطالب:وحيد نصيري

+ نوشته شده در شنبه دوازدهم بهمن 1387ساعت 14:33 توسط حسین |

ابتدا برای این کار  بایدبه  گزینه ی progectرفته گزینه یreferenseراانتخاب می کنیم سپس گزینه ی

Microsoft DAO 3.51  Object Libraryتیک دارمی کنیم.

بعد دو متغیر ازنوع تعریف می کنیم . Recordsetوdatabaseتعریف می کنیم .

(ادرس بانک اطلاعاتی)Set b = DBEngine.OpenDatabase

نکته:بااستفاده ازدستور app.pathمی توان آدرس برنامه را بدست آوردوبا چسباندن ان به نام بانک اطلاعاتی در رایانه های دیگرهم بدون تعغیر ادرس استفاده کرد.

(Set g = b.OpenRecordset("name table", dbOpenDynaset

dbOpenDynaset:باعث می شود جدول قابل تعغیر با شد

برای ارتبا ط ان با هر کنترلی ازخاصیت ()fieldsستفاده می کنیم مثلا

(  شماره فیلد یا "نام فیلد")text1=g.fields

وبرای ذخیره کردن   

g.addnew
g.fields=text
g.update

وبقیه خواص هایش مانند کنترل  ado  است

 

 

+ نوشته شده در سه شنبه هشتم بهمن 1387ساعت 23:11 توسط حسین |

 عه ای از عناصر یا کنترلها به همراه تعریف ویژگیها,متدها و رویدادهای آنها یک کلاس را تشکیل می دهد
پس از نصب vb تمام کلاس های ان فعال نیستند و برنامه نویس برای استفاده از عملیات خاص قادر به فعال سازی کلاس مورد نیاز خود می باشد .
برای فعال سازی یک کلاس مانند کلاس fso گزینه references از منوی projectرا انتخاب و سپس گزینه microsoft scripting runningرا علامت می زنیم
بافعال سازی این گزینه امکان پنج شی زیر در پروژه قابل استفاده می شود
1- fso : امکانات تاثیر متقابل روی فایل ها پوشه ها و درایوها (مانند ایجاد فهرست , انتقال یا کپی فایلها و...) را برای برنامه نویس فراهم می کند.
2- file : به برنامه نویس امکان دستکاری فایل ها را می دهد.
3- folder : به برنامه نویس امکان دستکاری پوشه ها را می دهد.
4- drive : به برنامه نویس امکان دستیابی به اطلاعات درایوها را می دهد.
5- textstream :به برنامه نویس امکان خواندن و نوشتن فایلهای متنی را می دهد.

برای استفاده از امکانات هر کدام از کلاسهای فعال در vb باید متغییری را از نوع آن کلاس تعریف نمایید.
در بخش general متغییری به نام fileso را توسط کلمه کلیدی دثص از نوع شی جدید fso به صورت زیر تعریف کنید.
dim fileso as new filesystemobject

حال متغییر fileso مانند یک شی از نوع کلاس fso بوده و می توانید با نسبت دادن متدهای این کلاس به این عنصر (متغییرfileso ) عملیات سیستم عامل را انجام داد.


fileso.copy "c:\data\*.exe" , "d :\"
با اجرای این دستور کلیه فایل های exe موجود در زیر فهرست data در درایو c: در فهرست ریشه درایو d: کپی می شوند.

 


ادامه مطلب
+ نوشته شده در یکشنبه یکم دی 1387ساعت 12:9 توسط حسین |