|
2016/03/16- |
当社の9bit通信対応 USB RS485/422絶縁型変換器(USB-306)対応の制御用DLL(HDL9BITDLL.dll)をVusial C#で利用する方法についての参考ページです。(Vusual Studio 2015によります)![]() |
公開APIのインターフェースクラス定義 // HDL9BITDLL.dllのためのクラス定義
public class HDLclass
{
//
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// HDL9BITDLL.dll 使用 ここから
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//Returns the number of attached devices with matching IDs.
//デバイス数取得
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetNumUartsA(
Int16 productIDFilter, //__in_opt uint16_t productIDFilter,
byte interfaceIDFilter, //__in_opt uint8_t interfaceIDFilter,
ref Int32 numUarts //__out uint32l_t* numUarts
);
//-------------------------------------------------------------------
//Opens the device specified by the index into the array of available
//devices And returns a handle to it.
//UARTオープン
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_OpenUartA(
Int32 memberIndex, //__in uint32l_t memberIndex,
Int16 productIDFilter, //__in_opt uint16_t productIDFilter,
byte interfaceIDFilter, //__in_opt uint8_t interfaceIDFilter,
ref IntPtr uartDeviceObject //__out H9bHandle_t* uartDeviceObject
);
//-------------------------------------------------------------------
//Returns the current USB Serial Number String.
//デバイス固有番号(シリアル番号)取得
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetOtpSerialNumberString(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref byte stringLength, //__out uint8_t* stringLength,
byte[] serialString //__out char* serialString
);
//-------------------------------------------------------------------
//Returns the currently configures data rate and character format
//通信条件の読み込み
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetLineCodingA(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref Int32 dataRate, //__out uint32l_t* dataRate,
ref Byte charFormat, //__out uint8_t* charFormat,
ref Byte parityType, //__out uint8_t* parityType,
ref Byte dataBits, //__out uint8_t* dataBits,
ref Byte flowControl, //__out uint8_t* flowControl,
ref Byte gpioMode0 //__out uint8_t* gpioMode0
);
//-------------------------------------------------------------------
//Configures the data rate and character format of a UART channel.
//通信条件設定
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_SetLineCodingA(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Int32 dataRate, //__in uint32l_t dataRate,
Byte charFormat, //__in uint8_t charFormat,
Byte parityType, //__in uint8_t parityType,
Byte dataBits, //__in uint8_t dataBits,
Byte flowControl, //__in uint8_t flowControl,
Byte gpioMode0 //__in uint8_t gpioMode0
// addressモード時 flowControl = 0x03
// それ以外は flowControl = 0x01
// gpioMode0は0x39固定
);
//-------------------------------------------------------------------
//Sets maximum allowable time for read and write operations.
//送受信タイムアウト時間読み込み
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetTimeouts(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref Int32 writeTimeout, //__in* uint32l_t writeTimeout,
ref Int32 readTimeout //__in* uint32l_t readTimeout
);
//-------------------------------------------------------------------
//Sets maximum allowable time for read and write operations.
//送受信タイムアウト時間設定
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_SetTimeouts(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Int32 writeTimeout, //__in uint32l_t writeTimeout,
Int32 readTimeout //__in uint32l_t readTimeout
);
//-------------------------------------------------------------------
//Returns the current setting for the number of bytes in the Rx FIFO
//before flow control is asserted to the remote UART.
//受信FIFO動作しきい値読み込み
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetUartRxFifoThreshold(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref Int16 rxFifoThreshold //__out uint16_t* rxFifoThreshold
);
//-------------------------------------------------------------------
//Sets how many bytes will be stored in the local UART's Rx FIFO
//before flow control is asserted to the remote UART.
//受信FIFO動作しきい値設定
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_SetUartRxFifoThreshold(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Int16 rxFifoThreshold //__in uint16_t rxFifoThreshold
);
//-------------------------------------------------------------------
//Close a device handle
//UARTクローズ
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_CloseUart(
IntPtr uartDeviceObject //__in H9bHandle_t uartDeviceObject
);
//-------------------------------------------------------------------
//Returns the currently configured addresses used by the UART when
//Address Match Mode is enabled.
//AddressModeで使用する設定アドレス取得
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetUartAddress(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref Byte unicastAddress, //__out uint8_t* unicastAddress,
ref Byte multicastAddress //__out uint8_t* multicastAddress
);
//-------------------------------------------------------------------
//Sets the addresses the UART will respond to when Address Match Mode
//is enabled.
//AddressModeで使用する設定アドレス設定
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_SetUartAddress(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Byte unicastAddress, //__in uint8_t unicastAddress,
Byte multicastAddress //__in uint8_t multicastAddress
);
//-------------------------------------------------------------------
//Reads data from a UART handle (USB IN transfers).
//受信データ読み込み
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_ReadUart(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Int32 numberOfBytesToRead, //__in uint32l_t numberOfBytesToRead,
byte[] byteBuffer, //__out uint8_t* byteBuffer,
ref Int32 numberOfBytesRead //__out uint32l_t* numberOfBytesRead
);
//-------------------------------------------------------------------
//Writes data to a UART handle (USB OUT transfers).
//送信データ書き込み(送信)
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_WriteUart(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Int32 numberOfBytesToWrite, //__in uint32l_t numberOfBytesToWrite,
byte[] byteBuffer, // __in uint8_t* byteBuffer,
ref Int32 numberOfBytesWritten //_out uint32l_t* numberOfBytesWritten
);
//-------------------------------------------------------------------
//__indicates whether a UART channel is currently enabled for transmit and receive
//送受信有効・無効設定確認
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_IsEnabled(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref Boolean enabled //__out boolean_t* enabled
);
//-------------------------------------------------------------------
//Enables a UART channel for transmit and receive
//送受信有効・無効設定
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_EnableUart(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Boolean enable //__in boolean_t enable
);
//-------------------------------------------------------------------
//Flushes buffers and FIFOs in transmit, receive, or both directions.
//送受信バッファを空にする
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_FlushBuffers(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Boolean flushTransmit, //__in boolean_t flushTransmit,
Boolean flushReceive //__in boolean_t flushReceive
);
//-------------------------------------------------------------------
//Requests a UART to transmit a break signal.
//ブレーク信号送信
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_SendBreak(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
Byte breakDuration //__in uint8_t breakDuration
);
//-------------------------------------------------------------------
//Requests a UART to stop transmitting break.
//ブレーク信号停止
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_CancelBreak(
IntPtr uartDeviceObject //__in H9bHandle_t uartDeviceObject,
);
//-------------------------------------------------------------------
//Returns the current USB Manufacturer String.
//製造メーカ名取得
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetOtpManufacturerString(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref byte stringLength, //__out uint8_t* stringLength,
byte[] manufacturingString //__out char* manufacturingString
);
//-------------------------------------------------------------------
//Returns the current USB Product String.
//製品名称取得
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetOtpProductString(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref byte stringLength, //__out uint8_t* stringLength,
byte[] productString //__out char* productString
);
//-------------------------------------------------------------------
//Returns the release version of this API.
//ファームウエアバージョン取得
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_GetSoftwareAPIAttributes(
ref Byte majorVersion, //__out uint8_t* majorVersion,
ref Byte minorVersion, //__out uint8_t* minorVersion,
ref Boolean sReleaseVersion //__out boolean_t* isReleaseVersion
);
//-------------------------------------------------------------------
//__indicates whether a device handle is still open
//オープン状況問い合わせ
[DllImport("HDL9BITDLL.dll", CharSet = CharSet.Auto)]
public static extern Int16 HDL9BIT_IsOpen(
IntPtr uartDeviceObject, //__in H9bHandle_t uartDeviceObject,
ref Boolean opened //__out boolean_t* opened
);
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// HDL9BITDLL.dll 使用 ここまで
//-------------------------------------------------------------------
//-------------------------------------------------------------------
}
|
定数クラス定義 //******************************************************************************
//* API Parameter Encodings
//******************************************************************************/
///*
// * Number of data bits. Input to HDL9BIT_SetLineCoding() and
// * output of HDL9BIT_GetLineCoding()
// */
public const Byte HDL9BIT_DATA_BITS_FIVE = 0; //#define HDL9BIT_DATA_BITS_FIVE 0x00
public const Byte HDL9BIT_DATA_BITS_SIX = 1; //#define HDL9BIT_DATA_BITS_SIX 0x01
public const Byte HDL9BIT_DATA_BITS_SEVEN = 2; //#define HDL9BIT_DATA_BITS_SEVEN 0x02
public const Byte HDL9BIT_DATA_BITS_EIGHT = 3; //#define HDL9BIT_DATA_BITS_EIGHT 0x03
public const Byte HDL9BIT_DATA_BITS_NINE = 4; //#define HDL9BIT_DATA_BITS_NINE 0x04
//
///*
// * Parity types. Input to HDL9BIT_SetLineCoding() and
// * output of HDL9BIT_GetLineCoding()
// */
public const Byte HDL9BIT_PARITY_NONE = 0; //#define HDL9BIT_PARITY_NONE 0x00
public const Byte HDL9BIT_PARITY_ODD = 1; //#define HDL9BIT_PARITY_ODD 0x01
public const Byte HDL9BIT_PARITY_EVEN = 2; //#define HDL9BIT_PARITY_EVEN 0x02
public const Byte HDL9BIT_PARITY_MARK = 3; //#define HDL9BIT_PARITY_MARK 0x03
public const Byte HDL9BIT_PARITY_SPACE = 4; //#define HDL9BIT_PARITY_SPACE 0x04
//
///*
// * Character formats. Input to HDL9BIT_SetLineCoding() and
// * output of HDL9BIT_GetLineCoding()
// */
public const Byte HDL9BIT_CHAR_FORMAT_STOP_SHORT = 0; //#define HDL9BIT_CHAR_FORMAT_STOP_SHORT 0x00
public const Byte HDL9BIT_CHAR_FORMAT_STOP_LONG = 1; //#define HDL9BIT_CHAR_FORMAT_STOP_LONG 0x01
//
///*
// * Flow control types. Input to HDL9BIT_SetLineCoding() and
// * output of HDL9BIT_GetLineCoding()
// */
public const Byte HDL9BIT_FLOW_CONTROL_NONE = 0; //#define HDL9BIT_FLOW_CONTROL_NONE 0x00
public const Byte HDL9BIT_FLOW_CONTROL_HW_RTS_CTS = 1; //#define HDL9BIT_FLOW_CONTROL_HW_RTS_CTS 0x01
public const Byte HDL9BIT_FLOW_CONTROL_ADDRESS_MODE = 3; //#define HDL9BIT_FLOW_CONTROL_ADDRESS_MODE 0x03
}
}
|
使用例・全ソース公開されている全てのAPIを使っているサンプルソースです。 //
// HDL9BITDLL.dll 使用例
// HuMANDATA LTD. 2016-03-19 BY A.USHIRO
//
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices; //dll使用のために
namespace WindowsFormsApplication2
{
public partial class HD9BITSAMPLE : Form
{
IntPtr HANHDL9BIT;
Int16 productIDFilter; //__in_opt uint16_t productIDFilter,
Int32 numUarts; //__out uint32l_t* numUarts
bool isOpenUart;
public HD9BITSAMPLE()
{
InitializeComponent();
}
// HDL9BITDLLの戻り値表示
private void memo_ret(String msg, int ret)
{
richTextBox_memo.Focus();
if (ret == HDL9BBITDEF.HDL9BIT_SUCCESS)
{
richTextBox_memo.AppendText( "*" + msg + " OK" + Environment.NewLine);
}
else
{
richTextBox_memo.AppendText("*" + msg + " ---- Error!" + Environment.NewLine);
}
}
// 文字列表示
private void memo(String msg)
{
richTextBox_memo.Focus();
richTextBox_memo.AppendText( "[" + msg + "]" + Environment.NewLine);
}
//オープン処理
private void button_devn_Click(object sender, EventArgs e)
{
int ret;
Byte strlen8b = 0;
Byte[] serialString = new Byte[512];
Byte[] productString = new Byte[512];
Byte[] manufacturingString = new Byte[512];
Byte minorVersion = 0;
Byte majorVersion = 0;
Boolean isReleaseVersion = false;
isOpenUart = false;
string ss1;
while (true)
{
//-------------------------------------------------------------------
//Returns the release version of this API.
//ファームウエアバージョン取得
ret = HDLclass.HDL9BIT_GetSoftwareAPIAttributes(ref majorVersion, ref minorVersion, ref isReleaseVersion);
memo_ret("HDL9BIT_GetSoftwareAPIAttributes", ret);
memo("majorVersion=0x" + majorVersion.ToString("X2"));
memo("minorVersion=0x" + minorVersion.ToString("X2"));
//Returns the number of attached devices with matching IDs.
//デバイス数取得
productIDFilter = 0x4001;
ret = HDLclass.HDL9BIT_GetNumUartsA(productIDFilter, (Byte)0, ref numUarts);
memo_ret("HDL9BIT_GetNumUartsA", ret);
//-------------------------------------------------------------------
//Opens the device specified by the index into the array of available
//devices And returns a handle to it.
//UARTオープン
label_devn.Text = "Device =" + numUarts.ToString("D");
ret = HDLclass.HDL9BIT_OpenUartA(0, productIDFilter, (Byte)0, ref HANHDL9BIT);
memo_ret("HDL9BIT_OpenUart", ret);
if (ret != 0)
{
break;
}
//-------------------------------------------------------------------
//Returns the currently configures data rate and character format
//通信条件の読み込み
Int32 dataRate = 0; //__out uint32l_t* dataRate,
Byte charFormat = 0; //__out uint8_t* charFormat,
Byte parityType = 0; //__out uint8_t* parityType,
Byte dataBits = 0; //__out uint8_t* dataBits,
Byte flowControl = 0; //__out uint8_t* flowControl,
Byte gpioMode0 = 0;
ret = HDLclass.HDL9BIT_GetLineCodingA(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
ref dataRate, //__out uint32l_t* dataRate,
ref charFormat, //__out uint8_t* charFormat,
ref parityType, //__out uint8_t* parityType,
ref dataBits, //__out uint8_t* dataBits,
ref flowControl, //__out uint8_t* flowControl,
ref gpioMode0 //__out uint8_t* gpioMode0
);
memo_ret("HDL9BIT_GetLineCodingA", ret);
//-------------------------------------------------------------------
//Configures the data rate and character format of a UART channel.
//通信条件設定
dataBits = HDL9BBITDEF.HDL9BIT_DATA_BITS_NINE; //'9bitモード指定
parityType = HDL9BBITDEF.HDL9BIT_PARITY_NONE;
dataRate = 12000000;
flowControl = HDL9BBITDEF.HDL9BIT_FLOW_CONTROL_ADDRESS_MODE;
gpioMode0 = 0x39;
ret = HDLclass.HDL9BIT_SetLineCodingA(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
dataRate, //__in uint32l_t dataRate,
charFormat, //__in uint8_t charFormat,
parityType, //__in uint8_t parityType,
dataBits, //__in uint8_t dataBits,
flowControl, //__in uint8_t flowControl,
gpioMode0 //__in uint8_t gpioMode0
// addressモード時 flowControl = 0x03
// それ以外は flowControl = 0x01
// gpioMode0は0x39固定
);
memo_ret("HDL9BIT_SetLineCodingA", ret);
ss1 = dataRate.ToString("D");
memo("dataRate = " + ss1);
//-------------------------------------------------------------------
//Sets maximum allowable time for read and write operations.
//送受信タイムアウト時間読み込み
Int32 writeTimeout = 0;
Int32 readTimeout = 0;
ret = HDLclass.HDL9BIT_GetTimeouts(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
ref writeTimeout, //__in* uint32l_t writeTimeout,
ref readTimeout //__in* uint32l_t readTimeout
);
writeTimeout = 500;
readTimeout = 1000;
//-------------------------------------------------------------------
//Sets maximum allowable time for read and write operations.
ret = HDLclass.HDL9BIT_SetTimeouts(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
writeTimeout, //__in uint32l_t writeTimeout,
readTimeout //__in uint32l_t readTimeout
);
memo_ret("HDL9BIT_HDL9BIT_GetTimeouts", ret);
//-------------------------------------------------------------------
//Returns the currently configured addresses used by the UART when
//Address Match Mode is enabled.
//AddressModeで使用する設定アドレス取得
Byte unicastAddress = 0; //__out uint8_t* unicastAddress,
Byte multicastAddress = 0; //__out uint8_t* multicastAddress
ret = HDLclass.HDL9BIT_GetUartAddress(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
ref unicastAddress, //__out uint8_t* unicastAddress,
ref multicastAddress //__out uint8_t* multicastAddress
);
memo_ret("HDL9BIT_GetUartAddress", ret);
//-------------------------------------------------------------------
//Sets the addresses the UART will respond to when Address Match Mode
//is enabled.
//AddressModeで使用する設定アドレス設定
unicastAddress = 0x55; //__out uint8_t* unicastAddress,
multicastAddress = 0X80; //__out uint8_t* multicastAddress
ret = HDLclass.HDL9BIT_SetUartAddress(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
unicastAddress, //__in uint8_t unicastAddress,
multicastAddress //__in uint8_t multicastAddress
);
memo_ret("HDL9BIT_SetUartAddress", ret);
memo_ret("HDL9BIT_SetUartRxFifoThreshold", ret);
ss1 = "0x"+ unicastAddress.ToString("X2");
memo("unicastAddress = " + ss1);
ss1 = "0x" + multicastAddress.ToString("X2");
memo("multicastAddress = " + ss1);
//-------------------------------------------------------------------
//Returns the current setting for the number of bytes in the Rx FIFO
//before flow control is asserted to the remote UART.
//受信FIFO動作しきい値読み込み
Int16 rxFifoThreshold = 0; //__out uint16_t* rxFifoThreshold
ret = HDLclass.HDL9BIT_GetUartRxFifoThreshold(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
ref rxFifoThreshold //__out uint16_t* rxFifoThreshold
);
memo_ret("HDL9BIT_GetUartRxFifoThreshold", ret);
//-------------------------------------------------------------------
//Sets how many bytes will be stored in the local UART's Rx FIFO
//before flow control is asserted to the remote UART.
//受信FIFO動作しきい値設定
rxFifoThreshold = 450; //__out uint16_t* rxFifoThreshold
ret = HDLclass.HDL9BIT_SetUartRxFifoThreshold(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
rxFifoThreshold //__in uint16_t rxFifoThreshold
);
memo_ret("HDL9BIT_SetUartRxFifoThreshold", ret);
ss1 = rxFifoThreshold.ToString("D");
memo("rxFifoThreshold = " + ss1 );
//-------------------------------------------------------------------
//__indicates whether a device handle is still open
//オープン状況問い合わせ
ret = HDLclass.HDL9BIT_IsOpen(HANHDL9BIT, ref isOpenUart);
memo_ret("HDL9BIT_IsOpen", ret);
memo(" --Open Uart --");
checkBox_isOpen.Checked = isOpenUart;
//-------------------------------------------------------------------
//Returns the current USB Serial Number String.
//デバイス固有番号(シリアル番号)取得
ret = HDLclass.HDL9BIT_GetOtpSerialNumberString(HANHDL9BIT, ref strlen8b, serialString);
memo_ret("HDL9BIT_GetOtpSerialNumberString", ret);
ss1 = System.Text.Encoding.ASCII.GetString(serialString);
ss1 = ss1.Substring(0, ss1.IndexOf("\0")); memo(ss1);
//-------------------------------------------------------------------
//Returns the current USB Product String.
//製品名称取得
ret = HDLclass.HDL9BIT_GetOtpProductString(HANHDL9BIT, ref strlen8b, productString);
memo_ret("HDL9BIT_GetOtpProductString", ret);
ss1 = System.Text.Encoding.ASCII.GetString(productString);
ss1 = ss1.Substring(0, ss1.IndexOf("\0")); memo(ss1);
//-------------------------------------------------------------------
//Returns the current USB Manufacturer String.
//製造メーカ名取得
ret = HDLclass.HDL9BIT_GetOtpManufacturerString(HANHDL9BIT, ref strlen8b, manufacturingString);
memo_ret("HDL9BIT_GetOtpManufacturerString", ret);
ss1 = System.Text.Encoding.ASCII.GetString(manufacturingString);
ss1 = ss1.Substring(0, ss1.IndexOf("\0")); memo(ss1);
//-------------------------------------------------------------------
//Flushes buffers and FIFOs in transmit, receive, or both directions.
//送受信バッファを空にする
Boolean flushTransmit = true;
Boolean flushReceive = true;
ret = HDLclass.HDL9BIT_FlushBuffers(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
flushTransmit, //__in boolean_t flushTransmit,
flushReceive //__in boolean_t flushReceive
);
memo_ret("HDL9BIT_FlushBuffers", ret);
//-------------------------------------------------------------------
//__indicates whether a UART channel is currently enabled for transmit and receive
//送受信有効・無効設定確認
Boolean enabled = false;
ret = HDLclass.HDL9BIT_IsEnabled(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
ref enabled //__out boolean_t* enabled
);
memo_ret("HDL9BIT_IsEnabled", ret);
//-------------------------------------------------------------------
//Enables a UART channel for transmit and receive
//送受信有効・無効設定
enabled = true;
ret = HDLclass.HDL9BIT_EnableUart(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
enabled //__in boolean_t enable
);
memo_ret("HDL9BIT_EnableUart", ret);
// loop end
break;
}
}
//クローズ
private void button_close_Click(object sender, EventArgs e)
{
//-------------------------------------------------------------------
//Close a device handle
//UARTクローズ
int ret;
ret = HDLclass.HDL9BIT_CloseUart(HANHDL9BIT);
memo_ret("HDL9BIT_CloseUart", ret);
isOpenUart = false;
checkBox_isOpen.Checked = isOpenUart;
}
// 起動時処理
private void HD9BITSAMPLE_Load(object sender, EventArgs e)
{
}
// BREAK ON
private void button_break_on_Click(object sender, EventArgs e)
{
if (isOpenUart)
{
//-------------------------------------------------------------------
//Requests a UART to transmit a break signal.
//ブレーク信号送信
int ret;
ret = HDLclass.HDL9BIT_SendBreak(HANHDL9BIT, 0);
memo_ret("HDL9BIT_SendBreak", ret);
}
else
{
memo("Openしてません");
}
}
// BREAK OFF
private void button_break_off_Click(object sender, EventArgs e)
{
if (isOpenUart)
{
//-------------------------------------------------------------------
//Requests a UART to stop transmitting break.
//ブレーク信号停止
int ret;
ret = HDLclass.HDL9BIT_CancelBreak(HANHDL9BIT);
memo_ret("HHDL9BIT_CancelBreak", ret);
}
else
{
memo("Openしてません");
}
}
private void button_send_Click(object sender, EventArgs e)
{
while (true)
{
if (!isOpenUart)
{
break;
}
int ret;
byte[] byteBuffer = new byte[512];
Int32 numberOfBytesToWrite;
Int32 numberOfBytesWritten = 0;
numberOfBytesToWrite = 10;
// 相手アドレス
Int32 address32 = Convert.ToInt32(textBox_adress.Text, 16);
Byte address = (Byte)(address32 & 0xff);
//送信テキスト
string s_text = textBox_stext.Text;
byte[] byteBuffertemp = System.Text.Encoding.ASCII.GetBytes(s_text);
int i = 0;
byteBuffer[i++] = address;
byteBuffer[i++] = 0x01;
numberOfBytesToWrite = s_text.Length * 2 + 2;
for ( int j= 0; i < s_text.Length *2 ; i+=2, j++)
{
byteBuffer[i] = byteBuffertemp[j];
byteBuffer[i + 1] = 0;
}
//-------------------------------------------------------------------
//Writes data to a UART handle (USB OUT transfers).
//送信データ書き込み(送信)
ret = HDLclass.HDL9BIT_WriteUart(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
numberOfBytesToWrite, //__in uint32l_t numberOfBytesToWrite,
byteBuffer, // __in uint8_t* byteBuffer,
ref numberOfBytesWritten //_out uint32l_t* numberOfBytesWritten
);
memo_ret("HDL9BIT_WriteUart", ret);
if (ret != HDL9BBITDEF.HDL9BIT_SUCCESS) break;
//------------------------------------------------------------------
// 受信
//-------------------------------------------------------------------
//Reads data from a UART handle (USB IN transfers).
//受信データ読み込み
Int32 numberOfBytesToRead = 256;
Int32 numberOfBytesRead = 0;
memo(".....wait recieve..");
ret = HDLclass.HDL9BIT_ReadUart(
HANHDL9BIT, //__in H9bHandle_t uartDeviceObject,
numberOfBytesToRead, //__in uint32l_t numberOfBytesToRead,
byteBuffer, //__out uint8_t* byteBuffer,
ref numberOfBytesRead //__out uint32l_t* numberOfBytesRead
);
if ((ret == HDL9BBITDEF.HDL9BIT_SUCCESS) ||
(ret == HDL9BBITDEF.HDL9BIT_ERR_UART_READ_FAIL_TIME_OUT))
{
if (numberOfBytesRead != 0) {
string rx_text;
rx_text = System.Text.Encoding.ASCII.GetString(byteBuffer);
rx_text = BitConverter.ToString(byteBuffer);
rx_text = rx_text.Substring(0, numberOfBytesRead * 3 - 1);
memo("RXD=" + rx_text);
}
}
else
{
}
memo(".....return");
// loop end
break;
}
}
private void checkBox_isOpen_CheckedChanged(object sender, EventArgs e)
{
checkBox_isOpen.Checked = isOpenUart;
}
|
| 弊社ではプログラミングに関数サポートを行う立場ではございませんが、USB-306を操作する上での具体的なご質問があればメールにてお問い合わせをお願いいたします。 |
| |