PDA

View Full Version : حرفه ای: کنترل ورودی یک پورت سخت افزاری با ویندوز سرویس



رامین مرادی
شنبه 22 مهر 1396, 11:49 صبح
وقت بخیر دوستان. یه سوالی داشتم به نظرتون میشه یک ویندوز سرویسی نوشت که بشه یک ورودی خاص رو کنترل کرد؟ مثلا پورت com یا پورت یو اس بی؟:متفکر:
اگه امکانش هست دنبال چی مطلبی باشم تا بتونم همچین چیزی رو یاد بگیرم؟
مد نظم این هست که بجای طراحی یک برنامه که همیشه باز باشه و ورودی اون پورت که یک رشته هست و اینکه نشانگر رو یک تسکت باشه ، بشه با ویندوز سرویس گرفت و مثلا در یک فایل متنی ذخیره کرد.

336699
شنبه 22 مهر 1396, 20:00 عصر
وقت بخیر دوستان. یه سوالی داشتم به نظرتون میشه یک ویندوز سرویسی نوشت که بشه یک ورودی خاص رو کنترل کرد؟ مثلا پورت com یا پورت یو اس بی؟:متفکر:
اگه امکانش هست دنبال چی مطلبی باشم تا بتونم همچین چیزی رو یاد بگیرم؟
مد نظم این هست که بجای طراحی یک برنامه که همیشه باز باشه و ورودی اون پورت که یک رشته هست و اینکه نشانگر رو یک تسکت باشه ، بشه با ویندوز سرویس گرفت و مثلا در یک فایل متنی ذخیره کرد.

شما برنامه ای که همیشه در حال اجرا باشه و ورودی پورت مورد نظر را در یک فایل متنی ذخیره کنه رو ساختی ؟؟؟ :متفکر:

اگه بله ، سورسش رو ارسال کنید ، بررسی کنیم و تبدیل به ویندوز سرویسش کنیم.

رامین مرادی
یک شنبه 23 مهر 1396, 08:28 صبح
نه هنوز ایجاد نکردم . یه ایده بود. ولی در اسرع وقت میفرستم

رامین مرادی
یک شنبه 23 مهر 1396, 10:41 صبح
خب من با استفاده از کدهای زیر رو تونستم پورت کام رو باز کنم و داده ارسال و دریافت کنم
حالا چطوری میشه قسمت دریافت رو به صورت ویندوز سرویس پیاده سازی کرد؟


string StrRecieve;
public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{


}
private void DisplayText(object sender, EventArgs e)
{
textBox2.AppendText(StrRecieve);
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.DataBits = 8;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;
serialPort1.BaudRate = 9600;
serialPort1.PortName = "COM1";
serialPort1.Open();
}


private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string StrRecieve;
StrRecieve = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}


private void button2_Click(object sender, EventArgs e)
{
serialPort1.WriteLine(textBox1.Text);
}


private void button3_Click(object sender, EventArgs e)
{
serialPort1.Close();
}

رامین مرادی
چهارشنبه 26 مهر 1396, 08:36 صبح
دوستان نظر خاصی ندارن؟

رامین مرادی
چهارشنبه 03 آبان 1396, 08:48 صبح
من به یه مطلب مشابهی رسیدم. فقط ممنون میشم برام تحلیل کنید. لطفا لینک زیر رو بخونید
https://social.msdn.microsoft.com/Forums/vstudio/en-US/b89c0bd4-2eb8-40b4-a28c-60aed063b8ba/serial-port-data-receiving-windows-service-memmory-check?forum=csharpgeneral

mr.sirwan
چهارشنبه 03 آبان 1396, 14:35 عصر
با سلام دوست عزیز، شما قبلا ویندوز سرویس نوشتی؟ با ویندوز سرویس اشنایی داری آیا؟ اگر نه به نظرم بهتره برین مفهوم و مکانیسم کدنویسی و کارکرد ویندوز سرویس رو یادبگیرین چیز سختیم نیس، در حد 4-5 تا متده که باید کداتونو حسب مورد اونجا بنویسین، تو پست چهارم شما ذکر کردین که کدارو پیدا کردین و موفق به انجام عملیات دلخواهتون هم شدین، پس فقط میمونه همون کدارو داخل متد OnStart بنویسین و یا بسته به نیازتون به تایمر بذارین و داخل OnTick ش کداتون رو پیست کنین

همین چیز خاصی نیس، مگر اینکه شما مشکل دیگه ای داشته باشین

رامین مرادی
پنج شنبه 04 آبان 1396, 09:29 صبح
با سلام دوست عزیز، شما قبلا ویندوز سرویس نوشتی؟ با ویندوز سرویس اشنایی داری آیا؟ اگر نه به نظرم بهتره برین مفهوم و مکانیسم کدنویسی و کارکرد ویندوز سرویس رو یادبگیرین چیز سختیم نیس، در حد 4-5 تا متده که باید کداتونو حسب مورد اونجا بنویسین، تو پست چهارم شما ذکر کردین که کدارو پیدا کردین و موفق به انجام عملیات دلخواهتون هم شدین، پس فقط میمونه همون کدارو داخل متد OnStart بنویسین و یا بسته به نیازتون به تایمر بذارین و داخل OnTick ش کداتون رو پیست کنین

همین چیز خاصی نیس، مگر اینکه شما مشکل دیگه ای داشته باشین

ممنون بابتن نظر مفیدتون. نمیخوام همینجوری برم سمت کد نویسیش. مد نظرم اول یادگپیری بعد اجراش هست.
مسائلی که نیاز دارم اینه من با پورت ارتباط برقرار کردم و تو متد استارت سرویس نوشتم خب. اگه یه موقع پورت من از سیستم جدا شد. مثلا طرف کابل رو جدا کرد آیا امکان داره سرویس با خطا روبه رو بشه و متوقف بشه؟ یا راهی هست(متدهای کنترل خطاش چیه که بشه پیش بینی کرد.کلا تو ویندوز سرویس این اولین تجربمه. دوس دارم همینطوری نرم سر کد نویسی)

mr.sirwan
پنج شنبه 04 آبان 1396, 12:03 عصر
یه سر به این لینک بزنین مشابه مشکل شماس، ببینین کمکی میکنه
https://stackoverflow.com/questions/286184/how-to-capture-a-serial-port-that-disappears-because-the-usb-cable-gets-unplugge