PDA

View Full Version : سوال: ارتباط با پورت LPT



imanf64
دوشنبه 23 آذر 1388, 11:23 صبح
دوستان بنده مقداری با سی شارپ کار کردم در حال حاضر یه پروژه دارم که میخواد نوشته خاصی رو از کاربر بگیره و به کمک پورت LPT روی LCD نمایش بده
برای اینکار اومدم یه فرم طراحی کردم و دوتا text box گذاشتم که برای خط اول و خط دوم LCD از کاربر ورودی رو میگیره
برای ارسال اطلاعات از یه فایل dll استفاده کردم به نام inpout32.dll و دستورات زیر رو در کدینگ فرمی که ایجاد کردم نوشتم:



using System;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Threading;
using System.Text;
using System.Xml;
using System.Xml.XPath;

namespace WindowsApplication1
{

public partial class Form11 : Form
{
public int control = 890, data = 888;
public Form11()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Reset_LEDs();
if (Line1.Text == "" && Line2.Text == "")
MessageBox.Show("Type Something in text boxes", "Fill the line boxes");
int a;
char[] line1_ch_buffer, line2_ch_buffer;
string line1_st_buffer, line2_st_buffer;
line1_st_buffer = Line1.Text; line1_ch_buffer = line1_st_buffer.ToCharArray();
line2_st_buffer = Line2.Text; line2_ch_buffer = line2_st_buffer.ToCharArray();
for (a = 0; a < line1_ch_buffer.Length; a++)
{
PortAccess.Output(control, 4); Thread.Sleep(1);
PortAccess.Output(data, (int)line1_ch_buffer[a]); Thread.Sleep(1);
PortAccess.Output(control, 5); Thread.Sleep(1);
}
move_to_second_line();
for (a = 0; a < line2_ch_buffer.Length; a++)
{
PortAccess.Output(control, 5); Thread.Sleep(1);
PortAccess.Output(control, 4); Thread.Sleep(1);
PortAccess.Output(data, (int)line2_ch_buffer[a]); Thread.Sleep(1);
PortAccess.Output(control, 5); Thread.Sleep(1);
}
}

private void Form11_Load(object sender, EventArgs e)
{

}
private void Reset_LEDs()
{
PortAccess.Output(data, 0);
}
private void move_to_second_line()
{
PortAccess.Output(control, 8); Thread.Sleep(2);
PortAccess.Output(data, 192); Thread.Sleep(2);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{

}
}
public class PortAccess
{
[DllImport("inpout32.dll", EntryPoint = "Out32")]
public static extern void Output(int adress, int value);
}
}

و ضمنا اومدم طبق عکس ضمیمه مدارمو بستم
حالا چند تا سوال دارم چون مدارم چیزی روی LCD نمایش نمیده

1.اول اینکه میگن توی ویندوز ایکس پی تنظیمات امنیتیش اجازه نمیده با پورت پرینتر ارتباط برقرار کنیم آیا تنظیم خاصی میخواد؟؟ من نمیدونم مشکل مدارم ازون هست یا خیر!

2.دوم اینکهکدی که نوشتم مشکلی نداره؟؟ اون کلاسی که تعریف کردم واسه ارتباط با پورت یعنی PortAccess آیا مشکل خاصی نداره و جایی که قرارش دادم درست هست؟؟

3.سوم در مورد مقدار متغیرهای data و control آیا درست هست؟ و پورت پرینتر درست آدرس دهی میشه؟؟ آخه آدرس پورت پرینتر 378 خست اما هیچ جای برنامه این آدرس بکار گرفته نشده آیا توی فایل dll هست؟؟ اخه من این برنامه رو از کدینگ یه پروژه مشابه استفاده کردم

4.راستی فایل dll ای که دارم توی پوشه سیستم 32 ویندوز کپی کردم ولی وقتی از add refrence میخوام اضافش کنم میگه نمیشه و فایل درست نیست آیا دستوری که نوشتم توی برنامه و کلاس portaccess واسه استفاده از کلاس این فایل کفایت میکنه یا خیر؟؟

5.آیا تابع reset led کار خودش رو درست انجام میده؟؟

6.ببخشید سوالم زیاد شد آخریش اینکه طبق عکسی که ضمیمه کردم شماره پینهای سوکت پورت lpt روی چطور باید حساب کنم؟ از روبرو به سوکت نگاه کنم و از راست یک دو سه... بشمرم و مدارو ببندم؟ یا از پشت (یعنی محل اتصال سیمها) به سوکت نگاه کنم و از راست شماره گذاری کنم و مدارو ببندم؟؟

fjm11100
دوشنبه 23 آذر 1388, 13:40 عصر
اولا پورت lpt چند تا حالت ميتونه بگيره كه از توي بايوس تنظيم ميشه (مثلا bidirectional يا enhanced) بسته به كارت اين حالت ها بدردت ميخورن
دوما مدارت كو؟

imanf64
دوشنبه 23 آذر 1388, 14:53 عصر
اولا پورت lpt چند تا حالت ميتونه بگيره كه از توي بايوس تنظيم ميشه (مثلا bidirectional يا enhanced) بسته به كارت اين حالت ها بدردت ميخورن
دوما مدارت كو؟

یه عکس ضمیمه پست اول کردم اون نقشه مدارم هست
از توی کدی که نوشتم شما بگید باید روی کدوم حالت تنظیم کنم؟؟

Abednorton
پنج شنبه 24 دی 1388, 19:21 عصر
سلام،
نمونه كد تحت وي بي 6 پروژه اي كه مي خواي رو نوشته دارم.:افسرده:
همچنين با پرت كام.
اگه به دردت ميخوره برات آپ كنم.

Saeed.Masoumi
پنج شنبه 24 دی 1388, 20:36 عصر
سلام:
[/URL][URL="http://www.codeproject.com/KB/cs/csppleds.aspx#xx943030xx"]اینجارو ببین (http://www.paraport.net/) برای برنامه نویسی ارتباط پارالل با LED به زبان C#
اینجا رو ببین (http://www.beyondlogic.org/parlcd/parlcd.htm) در مورد طرز بستن LCD
اینجا رو ببین (http://www.beyondlogic.org/porttalk/porttalk.htm) واسه اون قضیه ویندوز Xp

b.z386
چهارشنبه 27 دی 1391, 22:01 عصر
سلام
دادا اگه زحمتی نیست برا من آپش کن
ممنونت میشم ، چون چند روز دیگه موعده تحویلشه ، برنامشو نوشتم + مدارش.ولی برنامش یه سری ایراد داره که دیگه الان وقت رفعش نیست
موفق باشی