PDA

View Full Version : ارتباط با پورت com در asp.net



amirniknam
دوشنبه 30 اردیبهشت 1387, 21:12 عصر
قبل از هر چيز اينو بگم كه خيلي در اين باره جسجو كردم و نه در اينجا بلكه كلا چيزي پيدا نكردم به هر صورت اگر سوالم تكراري هست عذر ميخوام
مي خواستم ببينم آيا راهي براي ارتباط با پورت سريال در asp.net هست يا خير؟ كدهاي موجود براي #C تحت وب كار نمي كنند
در يك فروم انگليسي چند كامپوننت معرفي كرده بودند كه متاسفانه من نسخه هاي رايگان اون ها رو گير نياوردم يكجا هم نوشته بود كه بايد از كدهاي مديريت نشده و توابع API استفاده كني (كه با توجه به نوع كارم واقعا اين قضيه بسيار مشكل هست)
از دوستان تقاضاي كمك دارم

shahab_ksh
دوشنبه 30 اردیبهشت 1387, 21:17 عصر
مي خواستم ببينم آيا راهي براي ارتباط با پورت سريال در asp.net هست يا خير؟

پورت com طرف سرور یا کلاینت؟ کدوم منظورتونه

amirniknam
دوشنبه 30 اردیبهشت 1387, 21:41 عصر
پورت سريال طرف سرور

shahab_ksh
دوشنبه 30 اردیبهشت 1387, 23:00 عصر
پورت سريال طرف سرور


فکر نمی کنم مستقیم بشه اگه طرف سرور این کار رو دوست دارید انجام بدید از برنامه واسط استفاده کنید بهتره تا دوستان دیگه چه نظری داشته باشن !

twelve
دوشنبه 30 اردیبهشت 1387, 23:03 عصر
یک کلام :سمت سرور با asp نمیشه!

amirniknam
سه شنبه 31 اردیبهشت 1387, 04:44 صبح
فکر نمی کنم مستقیم بشه اگه طرف سرور این کار رو دوست دارید انجام بدید از برنامه واسط استفاده کنید بهتره تا دوستان دیگه چه نظری داشته باشن !
مي شه منظورتون رو واضح تر بگيد

amirniknam
سه شنبه 31 اردیبهشت 1387, 11:12 صبح
کسی از دوستان در مورد کامپوننت ActiveComport Serial Port Toolkit چیزی شنیده
این کامپوننت ظاهرا قادر به ارتباط با پورت سریال سمت سرور هست لطفا در صورتی که اطلاعاتی در این مورد دارید بفرمایید

shahab_ksh
چهارشنبه 01 خرداد 1387, 12:09 عصر
مي شه منظورتون رو واضح تر بگيد

در مورد این کامپوننت چیزی نشنیدم اما منظورم اینه که شما فرض کنید یه وب سایت دارید و میخاید در هر جای دنیا که بودید بتونید وارد وب سایتتون بشید از اون طریق به کام پورتتون فرمان بدید

خوب یه برنامه Windows App رو در سرورتون نصب کنید که با وب سرویس سایت ارتباط برقرار کنه بر حسب پارامترهای دریافتی تصمیم و فرمانهای لازم رو اجرا کنه

برای تغییر پارامترها (تغییر فرمان برای کامپورت) هم از طریق سایتتون اقدام کنید در هر کجا که بودید

این روش برای کنترل رباتها استفاده میشه تحت وب

amirniknam
چهارشنبه 01 خرداد 1387, 15:48 عصر
در مورد این کامپوننت چیزی نشنیدم اما منظورم اینه که شما فرض کنید یه وب سایت دارید و میخاید در هر جای دنیا که بودید بتونید وارد وب سایتتون بشید از اون طریق به کام پورتتون فرمان بدید

خوب یه برنامه Windows App رو در سرورتون نصب کنید که با وب سرویس سایت ارتباط برقرار کنه بر حسب پارامترهای دریافتی تصمیم و فرمانهای لازم رو اجرا کنه

برای تغییر پارامترها (تغییر فرمان برای کامپورت) هم از طریق سایتتون اقدام کنید در هر کجا که بودید

این روش برای کنترل رباتها استفاده میشه تحت وب
ممنون از توجهتون
احتمالا باید همین کاری رو که شما گفتید انجام بدم البته این قضیه مشکلات زیادی رو به سبب نوع پروژم به همراه می یاره
در مورد کامپوننتی که گفتم آدرسش اینه http://www.activexperts.com البته من لینک نسخه کاملش رو گیر آوردم (چون در این جا فعالیت های وارز ممنوع هست نمی تونم لینکش رو بزارم) روی کنترلش کار کردم ظاهرا می تونه هم سمت کلاینت و هم سرور با پورت سریال ارتباط برقرار کنه البته هنوز به طور قطع جواب نگرفتم اگر موفق شدم که هیچ و گرنه مجبورم از روش گفته شده استفاده کنم

amirniknam
سه شنبه 07 خرداد 1387, 13:52 عصر
همونطور که گفتم از ارتباط با پورت سریال سرور به وسیله ASP.NET صرفنظر کردم و این کارو به وسیله یک windows application انجام دادم اما مشکلی در انجام این کار برام پیش اومده من میخوام کاربر از طریق وب سرویسی که نوشتم بتونه در زمان خاصی اطلاعاتی را از طریق دستگاهی و با پورت سریال به سرور منتقل کنه حالا این برنامه ی windows چگونه باید از آپدیت شدن زمان دسترسی به پورت کام با خبر بشه ؟ یعنی هنگامی که وب سرویس اطلاعات را آپدیت کرد برنامه تشخیص و براساس داده های جدید کار کنه؟ (تنظیم پارامتر های برنامه از طریق وب سرویس یا یه چیزی تو همین مایه ها)
آیا باید یک تایمر بزارم و مرتبا اطلاعات زمانی رو بخونه و در صورت تغییر ،زمان رو اصلاح کنه یا راه بهتری هم هست؟ لطفا کمک کنید

raravaice
سه شنبه 07 خرداد 1387, 14:56 عصر
آیا باید یک تایمر بزارم و مرتبا اطلاعات زمانی رو بخونه و در صورت تغییر ،زمان رو اصلاح کنه.

تنها راهش همینه.

موفق باشید

amirniknam
سه شنبه 07 خرداد 1387, 15:34 عصر
تنها راهش همینه.

موفق باشید
ممنون
اما آیا امکان نداره من یک event رو raise کنم و بعد با کنترل اون event برنامه متوجه تغییرات بشه
من با خودم گفتم اگر این کار نشه یک استثنا رو پرتاب کنم اون وقت با catch کردنش و مشخص کردن شماره استثنا کار رو انجام بدم

raravaice
سه شنبه 07 خرداد 1387, 16:14 عصر
اما آیا امکان نداره من یک event رو raise کنم و بعد با کنترل اون event برنامه متوجه تغییرات بشه

به هر حال توی اون event باید تو یه زمان مشخص بره وضعیت رو چک کنه و در صورت تغییر اتفاق بیافته.



من با خودم گفتم اگر این کار نشه یک استثنا رو پرتاب کنم اون وقت با catch کردنش و مشخص کردن شماره استثنا کار رو انجام بدم


برنامت برام گنگ هست!درست نمیدونم چی تو سرت میگزره ولی:

ظاهرا از Dedicate یا VPS داری استفاده میکنی که تونستی Win App روش Run کنی.
پس این وسط دیگه web رو بزار کنار و دیتای روی پورت Com رو عینا انتقال بده روی یکی از پورتهای TCP حالا با برنامه سمت کلاینت مثل یه پورت Com باهاش برخورد کن.
این کار انجام شده و فقط یه تئوری نیست نمونه برنامه هایی هم که میان رابط TCP برای پورت Com درست میکنن زیاد هست.

حالا شما هدفت چیه و داری از چه دستگاهی استفاده میکنی من نمیدونم مگر سئوالت رو و صورت مسئله رو واضح و بدون ابهام بیان کنی.

موفق باشید

amirniknam
سه شنبه 07 خرداد 1387, 19:07 عصر
پس این وسط دیگه web رو بزار کنار و دیتای روی پورت Com رو عینا انتقال بده روی یکی از پورتهای TCP حالا با برنامه سمت کلاینت مثل یه پورت Com باهاش برخورد کن.


منظورتون با استفاده از net remoting. هست؟
اجازه بدید مسئله رو واضح تر بیان کنم :
اگر پست های قبلی رو ملاحظه کرده باشید من قصد ارتباط با پورت کام سرور رو از طریق asp.net داشتم اما با توجه به توصیه دوستان این کا رو با استفاده از یک برنامه تحت ویندوز انجام دادم و با استفاده از یک web service در خواست رو به برنامه کاربر ارسال میکنم بنابراین روش کار به این صورت هست که کاربر از طریق برنامه تحت وب درخواستی را برای دریافت اطلاعات از طریق پورت کام می نماید برنامه تحت وب از طریق وب سرویس این درخواست را به برنامه تحت ویندوز منتقل میکند برنامه تحت ویندوز اطلاعات را خوانده و داخل دیتا بیس میریزد از این جا به بعد دیگر برنامه تحت ویندوز تا درخواست بعدی برای خوانده اطلاعات کاری ندارد حالا من در نحوه ارسال درخواست از طریق وب سرویس به برنامه تحت ویندوز اشکال دارم و اینکه چگونه بلافاصله از طریق وب سرویس به برنامه تحت ویندوز خبر دهم که کاربر درخواست خواندن اطلاعات را کرده
از توجه شما ممنونم

raravaice
چهارشنبه 08 خرداد 1387, 13:46 عصر
وب سرویس قابلیت 2 طرفته نداره و بر اساس درخواست پاسخ رو میفرسته یعنی شما نمیتونی دستور رو از وب سرویس برای کلاینت بفرستی بدون اینکه کلاینت درخواستی داده باشه.
شما این ما بین به یه تایمر نیاز داری که هر چند وقت یک بار اطلاعات برنامه رو با سرور آپدیت کنه.

موفق باشید

amirniknam
چهارشنبه 08 خرداد 1387, 19:48 عصر
خیلی از توضیحتون ممنونم
فقط امکان نداره از این ترفند استفاده کنم به این صورت که در انتهای تابع فراخوانی شده از وب سرویس یک استثنا رو پرتاب کنم بعد این استثنا به برنامه تحت ویندوز منتقل می شه و در برنامه تحت ویندوز اون رو کنترل کنم ؟

raravaice
پنج شنبه 09 خرداد 1387, 11:16 صبح
استثنا رو پرتاب کنم بعد این استثنا به برنامه تحت ویندوز منتقل می شهکجا پرتاب کنی، چه جوری؟
وقتی برنامت به وب سرویس متصل نباشه چطور میخواد از این استثنا مطلع بشه.
تعامل وب بر اساس درخواست و پاسخ هست ، هیچکدام از طرفین این کار نمیتونن بدون وابستگی به برنامه مقابل کارشونو انجام بدن.

موفق باشید

amirniknam
پنج شنبه 09 خرداد 1387, 16:34 عصر
درسته حق با شماست
علت اینکه دنبال راه دیگه ای به غیر تایمر می گردم به ماهیت کارم بر می گرده
من از این روش استفاده کردم و خوشبختانه جواب گرفتم به این صورت که وب سرویس یک فایل رو بعد از انجام کار تغییر میده (این فایل می تونه اطلاعات زمانی رو داشته باشه یا یک فایل خالی تنها به منظور فراهم کردن هدفمون باشه) بعد من این فایل رو مانیتور می کنم یعنی در هنگام تغییر فایل event تی فعال می شه و انوقت برنامه تحت ویندوز متوجه تغییرات خواهد شد
الان این روش کار می کنه اما اگر شما اشکالی در اون میبینید لطفا نظر خودتون رو بگید.

raravaice
پنج شنبه 09 خرداد 1387, 16:47 عصر
امیر جان من یه چیز رو نفهمیدم!
win app و web app توی یه PC اجرا میشن؟!

اگر اینطوره که اصلا گفته های بالای منو فراموش کن و همین روشی رو که گفتی ادامه بده چون من فکر میکردم که win app داره روی کلاینت اجرا میشه.

ولی اگر برنامه شما داره روی یه کلاینت اجرا میشه برام توضیح بده که شما چه طور میخوا برنامت رو از این event مطلع کنی؟!

موفق باشید

amirniknam
شنبه 11 خرداد 1387, 12:08 عصر
ببخشد من 2 روز نتونستم وارد سایت بشم
بله هم win هم web هر دو روی یک سرور اجرا می شوند.
اگر منظور شما خبر دار شدن برنامه win از طریق تغییر در فایل هست من این کار رو با کلاس FileSyatemWatcher انجام می دم شما می تونید به این ترتیب فایل هاتون رو مانیتور کنید:



FileSystemWatcher watcher=new FileSystemWatcher ();
watcher.Path="c:myfolder"@
watcher.NotifyFilter=بر چه اساسی event ها فعال بشن از enum notifyFilter استفاده کن
watcher.filter="*.txt";
watcher.Changed+=new ...
watcher.creat+...
و بقیه رویداد ها...




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

minaalamshahi
یک شنبه 19 آذر 1391, 19:52 عصر
یک کلام :سمت سرور با asp نمیشه!

پس چرا توی این لینک نوشته
http://barnamenevis.org/showthread.php?302124-استفاده-از-serial-port-در-وب-سایت&highlight=%D9%BE%D9%88%D8%B1%D8%AA+%D8%B3%D8%B1%DB %8C%D8%A7%D9%84
شما وقتي از پورت ميخوني در واقع داري از پورت سرور ميخوني نه كلاينت...!