PDA

View Full Version : مشکل با سرعت پایین پرینتر سوزنی در گزارشات



cd2007
سه شنبه 20 شهریور 1386, 14:12 عصر
سلام دوستان من یک برنامه نوشتم که موقه پرینت باید( پریتر سوزنی) باشه حالا می خواستم بدونم چطوری میشه سرعت پرینتر بالا برد (منظور اینه که مثل موقعی که داخل داس هست و با سرعت بالا چاپ می کنه) ؟:متفکر:

dot_net_lover2
پنج شنبه 06 دی 1386, 12:42 عصر
منم هم همین مشکل را دارم ٬ از دوستان اگر کسی راهی پیدا کرده لطفا راهنمایی کنه.

linux
پنج شنبه 06 دی 1386, 23:47 عصر
سلام دوستان من یک برنامه نوشتم که موقه پرینت باید( پریتر سوزنی) باشه حالا می خواستم بدونم چطوری میشه سرعت پرینتر بالا برد (منظور اینه که مثل موقعی که داخل داس هست و با سرعت بالا چاپ می کنه) ؟:متفکر:

تنها کاری که می تونی بکنی این هست که گزارشاتی که درست کردی تبدیل کنی به فرمت داس بعدش lqset را اجرا کنی و فایل را مستقیم بفرستی روپرینتر

BraveMind
چهارشنبه 28 فروردین 1387, 09:59 صبح
من دارم با #c پرینت میکنم اما سرعتش پایینه توی یکی از تاپیکا نوشته شده بود که تبدیلش کنید یه فرمت داس بعد از lqset استفاده کنید کسی از دوستان میتونه راهنمایی کنه که چی هست

razavi_university
چهارشنبه 28 فروردین 1387, 11:57 صبح
تنها کاری که می تونی بکنی این هست که گزارشاتی که درست کردی تبدیل کنی به فرمت داس بعدش lqset را اجرا کنی و فایل را مستقیم بفرستی روپرینتر
لطف می کنین در مورد این روشی که گفتین بیشتر توضیح بدین

linux
چهارشنبه 28 فروردین 1387, 12:36 عصر
لطف می کنین در مورد این روشی که گفتین بیشتر توضیح بدین
در ویندوز اطلاعات شما بصورت یک عکس به پرینتر فرستاده می شود نه بصورت مجموعه از کارکترها، خوب این برای پرینترهای لیزر و جوهرافشان مشکلی نیست ولی برای چاپگرهای سوزنی که یک سری کاراکتر در حافظه دارند و با استفاده از این کارکترها سریعتر چاپ می شوند دردسر ساز هست، شما چه یک عکس روی پرینتر سوزنی بفرستید چه یک گزارش کریستال ریپورت هیچ فرقی با هم ندارند، در حالی که مزیت پریتنرهای سوزنی در چاپ کارکتری هست، شما برای این کار 2 راه دارید
1- گزارش را با کریستال ریپورت بسازید به فرمت داس تبدیل کنید و روی پرینتر بفرستیدف
2- کریستال ریپورت را کنار بگذارید یک گزارش ساز خودتان بنویسید که فایلهای داسی تولید کند و آنها را روی چاپگر بفرستید.
یک همچین چیزی را گزارش ساز fastreport دارد.

BraveMind
چهارشنبه 28 فروردین 1387, 13:08 عصر
در ویندوز اطلاعات شما بصورت یک عکس به پرینتر فرستاده می شود نه بصورت مجموعه از کارکترها، خوب این برای پرینترهای لیزر و جوهرافشان مشکلی نیست ولی برای چاپگرهای سوزنی که یک سری کاراکتر در حافظه دارند و با استفاده از این کارکترها سریعتر چاپ می شوند دردسر ساز هست، شما چه یک عکس روی پرینتر سوزنی بفرستید چه یک گزارش کریستال ریپورت هیچ فرقی با هم ندارند، در حالی که مزیت پریتنرهای سوزنی در چاپ کارکتری هست، شما برای این کار 2 راه دارید
1- گزارش را با کریستال ریپورت بسازید به فرمت داس تبدیل کنید و روی پرینتر بفرستیدف
2- کریستال ریپورت را کنار بگذارید یک گزارش ساز خودتان بنویسید که فایلهای داسی تولید کند و آنها را روی چاپگر بفرستید.
یک همچین چیزی را گزارش ساز fastreport دارد.
1-بنظر شما خود کریستال ریپورت مشکل ساز نیست ؟
3- از ACTIVEREPORT خودم ک رک کردم هم استفاده کردم اما اون هم واقعا سرعت RUN شدنش پایین بود
2-من یک کلاس دارم که با اون بوسیله شی printdocument کار پرینت رو انجام می دم حالا چه جوری اون رو به فرمت داس تبدیل کنم ؟

linux
چهارشنبه 28 فروردین 1387, 21:43 عصر
1-بنظر شما خود کریستال ریپورت مشکل ساز نیست ؟
3- از ACTIVEREPORT خودم ک رک کردم هم استفاده کردم اما اون هم واقعا سرعت RUN شدنش پایین بود
2-من یک کلاس دارم که با اون بوسیله شی printdocument کار پرینت رو انجام می دم حالا چه جوری اون رو به فرمت داس تبدیل کنم ؟

کریستال ریپورت و اکتیوریپورت این امکان را ندارند، تنها گزارش سازی که دیدیم این را دارد به اسم fastreport هست http://fast-report.com/en/
شما دیگه نباید از printdocument استفاده کنید. باید یک کلاس خودتان بنویسید که یک فایل خروجی درست کند به صورت تکست

razavi_university
پنج شنبه 29 فروردین 1387, 01:17 صبح
1- گزارش را با کریستال ریپورت بسازید به فرمت داس تبدیل کنید و روی پرینتر بفرستید
2- کریستال ریپورت را کنار بگذارید یک گزارش ساز خودتان بنویسید که فایلهای داسی تولید کند و آنها را روی چاپگر بفرستید.

خب در هر دو حالت ما باید فرمت داسی رو بدونیم چیه، فرمتش چطوریه ، چطوری تبدیل کنیم و ...:متفکر:
ولی من نمی‌دونم میشه لطفا راهنمایی کنین یک لینکی ، کدی ، ...
ممنون

linux
پنج شنبه 29 فروردین 1387, 21:01 عصر
خب در هر دو حالت ما باید فرمت داسی رو بدونیم چیه، فرمتش چطوریه ، چطوری تبدیل کنیم و ...:متفکر:
ولی من نمی‌دونم میشه لطفا راهنمایی کنین یک لینکی ، کدی ، ...
ممنون
http://www.novinpro.blogfa.com/post-10.aspx
ببین ، شما می توانید از فونتهای موجود خود چاپگر استفاده کنید یا برای اینکار فونتهای جدید تعریف کنید و به چاپگر ارسال کنید در زمانی که از داس استفاده می کردند ، از برنامه به نام lqset برای فارسی کردن پرینتر استفاده می کردند که کدپیج ایران سیستم را با توجه به فونت تعریف شده در پرینتر تعریف می کرد.
با این کلاس شما می توانید اطلاعات را مستقیم از یک فایل تکست به پرینتر بفرستید.
یم فایل تکس درست کنید برای نمونه بنویسد "hello my printer" و با استفاده از این کد بفرستید روی پرینتر و یک بار دیگر فایل تکست را از درون برنامه نت پد و با استفاده از دستور پرینت چاپ کنید، و فرق را ببنید.

public class PrintFactory
{
public const short FILE_ATTRIBUTE_NORMAL = 0x80;
public const short INVALID_HANDLE_VALUE = -1;
public const uint GENERIC_READ = 0x80000000;
public const uint GENERIC_WRITE = 0x40000000;
public const uint CREATE_NEW = 1;
public const uint CREATE_ALWAYS = 2;
public const uint OPEN_EXISTING = 3;

[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess,
uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition,
uint dwFlagsAndAttributes, IntPtr hTemplateFile);

public static void sendTextToLPT1( String receiptText )
{
IntPtr ptr = CreateFile("LPT1", GENERIC_WRITE, 0,
IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);

/* Is bad handle? INVALID_HANDLE_VALUE */
if (ptr.ToInt32() == -1)
{
/* ask the framework to marshall the win32 error code to an exception */
Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWi n32Error());
}
else
{
FileStream lpt = new FileStream(ptr, FileAccess.ReadWrite);
Byte[] buffer = new Byte[2048];
//Check to see if your printer support ASCII encoding or Unicode.
//If unicode is supported, use the following:
//buffer = System.Text.Encoding.Unicode.GetBytes(Temp);
buffer = System.Text.Encoding.ASCII.GetBytes(receiptText);
lpt.Write(buffer, 0, buffer.Length);
lpt.Close();
}
}
}

BraveMind
پنج شنبه 29 فروردین 1387, 22:07 عصر
سلام
با استفاده از printdocument یه کلاس طراحی کردم ولی وقتی با پرینتر hp پرینت میکنم کارکترهای فارسی بهم میریزه درایور جدیدش رو دانلود کردم ولی درست نشد
بنظرتون چکار کنم

razavi_university
جمعه 30 فروردین 1387, 02:41 صبح
http://www.novinpro.blogfa.com/post-10.aspx
ببین ، شما می توانید از فونتهای موجود خود چاپگر استفاده کنید یا برای اینکار فونتهای جدید تعریف کنید و به چاپگر ارسال کنید در زمانی که از داس استفاده می کردند ، از برنامه به نام lqset برای فارسی کردن پرینتر استفاده می کردند که کدپیج ایران سیستم را با توجه به فونت تعریف شده در پرینتر تعریف می کرد.
با این کلاس شما می توانید اطلاعات را مستقیم از یک فایل تکست به پرینتر بفرستید.
یم فایل تکس درست کنید برای نمونه بنویسد "hello my printer" و با استفاده از این کد بفرستید روی پرینتر و یک بار دیگر فایل تکست را از درون برنامه نت پد و با استفاده از دستور پرینت چاپ کنید، و فرق را ببنید.
[
ممنون از اطلاعاتت
حالا ما از طریق ویندوز هم برای چاپ فارسی نیاز به lqset داریم؟
ممکنه گزارش ما فقط متن ساده نباشه که بشه فرمت فایل متنی داشته باشه (یعنی تصاویر رو هم باید با کاراکتر بسازیمشون)؟

linux
جمعه 30 فروردین 1387, 09:41 صبح
ممنون از اطلاعاتت
حالا ما از طریق ویندوز هم برای چاپ فارسی نیاز به lqset داریم؟
ممکنه گزارش ما فقط متن ساده نباشه که بشه فرمت فایل متنی داشته باشه (یعنی تصاویر رو هم باید با کاراکتر بسازیمشون)؟
ببین این پرینترها از قراردادی به نام esc/p2 استفاده می کنند، دنبال این مطلب بگردی ، کل چیز پیدا می کنی.حتما می دونی که مثلا مودم ها با دستوراتی که به دستورات AT هست کار می کنند یعنی بعد از وصل شدن به پورت مثلا com2 و فرستادن دستور atz مودم ریست می شه، اینجا هم همینطور، بعد از وصل شدن به پورت LPT1 با فرستادن دستوراتی که با کاراکتر ESC شروع می شوند، شما می توانید پرینتر را کنترل کنید.
برای نمونه در این سایت http://webpages.charter.net/dperr/links/esc_p2.htm دستورات توضیح داده شده.