Расширенная информация о размере страницы в C # - PullRequest
1 голос
/ 24 марта 2011

Я должен напечатать специальную этикетку на термопринтере.У меня все настроено и работает с одним исключением: у рулонов этикеток по две этикетки в строке, но объекты печати C #, похоже, не видят этого.

Когда я запрашиваю информацию PageSize, он говорит мне, чтометка 3,15 "х 0,75".Хотя это верно для всей метки , она не дает мне никакой информации о размере каждой отдельной метки или интервале между ними.

Копание в ini-файлах драйвера, тамэто линия, которая выглядит как PageSize84 = THT-6-423,3150,2,1500,750,150,125,1.Кажется, вся информация, которая мне нужна, приведена в этой строке (2 столбца, 1500 в ширину, 750 в высоту), я просто не знаю, как получить к ней доступ из C #.Я сегодня рыскал в сети, и мне не повезло.

Я всегда мог жестко закодировать информацию на данный момент, но это не подтвердит код в будущем, если производство изменит этикетки.

1 Ответ

3 голосов
/ 25 марта 2011

Если вы пытаетесь прочитать INI-файл, чтобы получить значения, вы можете использовать это.

IniFile.ReadIniValue ("[Tag]", "Server", @ "C: \ my.ini");

#region Usings

using System.Text;
using System.Runtime.InteropServices;
#endregion

/// <summary>
/// Communicates with ini files
/// </summary>
public static class IniFile
{
    #region Declarations



    #endregion

    #region Constructor/Deconstructor

    /// <summary>
    /// Initializes a new instance of the <see cref="IniFile"/> class.
    /// </summary>
    static IniFile()
    {
    }

    #endregion

    #region Properties



    #endregion

    #region Win32_API

    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(
        string section,
        string key, string def,
        StringBuilder retVal,
        int size, string filePath);

    [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool WritePrivateProfileString(string lpAppName,
       string lpKeyName, string lpString, string lpFileName);

    #endregion

    /// <summary>
    /// Reads the ini value.
    /// </summary>
    /// <param name="section">The section.</param>
    /// <param name="key">The key.</param>
    /// <param name="iniFilePath">The ini file path.</param>
    /// <returns>Value stored in key</returns>
    /// <exception cref="FileNotFoundException"></exception>
    public static string ReadIniValue(string section, string key, string iniFilePath)
    {
        if(!File.Exists(iniFilePath))
        {
            throw new FileNotFoundException();
        }

        const int size = 255;
        var buffer = new StringBuilder(size);
        var len = GetPrivateProfileString(section, key, string.Empty, buffer, size, iniFilePath);

        if (len > 0)
        {
            return buffer.ToString();
        }
        return string.Empty;
    }

    /// <summary>
    /// Writes the ini value.
    /// </summary>
    /// <param name="section">The section.</param>
    /// <param name="keyname">The keyname.</param>
    /// <param name="valueToWrite">The value to write.</param>
    /// <param name="iniFilePath">The ini file path.</param>
    /// <returns>true if write was successful, false otherwise</returns>
    public static bool WriteIniValue(string section,string keyname,string valueToWrite,string iniFilePath)
    {
        return WritePrivateProfileString(section, keyname, valueToWrite, iniFilePath);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...