cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Try the Materials Informatics Toolkit, which is designed to easily handle SMILES data. This and other helpful add-ins are available in the JMP® Marketplace
Choose Language Hide Translation Bar
GeneratingKappa
New Member

How to receive messages from windows using JSL of JMP software?

 

My operating system is 64-bit Windows 10.

 

Thanks Experts!

3 REPLIES 3
Craige_Hales
Super User

Re: How to receive messages from windows using JSL of JMP software?

Need more info. What are you trying to do? Is this about the windows OS API? Is this about a particular program?

edit: Is this about email?

Craige
GeneratingKappa
New Member

Re: How to receive messages from windows using JSL of JMP software?

Thanks Experts!

 

 

It is a data transfer client software.
It implements API data transmission through DLL.
It provides data interface specifications.
It is based on C#
I don't know how to change it to a JSL implementation.

GeneratingKappa
New Member

Re: How to receive messages from windows using JSL of JMP software?

It has more regulations.

I've excerpted some of it.

This is my first experience with this kind of content.So I don't know how to deal with it.

Thanks for the expert's help.

 

const
// Work mode type definition
RCV_WORK_SENDMSG = 4 // Message work mode


// Message subtypes
News_Sha_Ex = 2 // The firsttype message
News_Szn_Ex = 4 // The secondtype message

// Data
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_REPORT_STRUCTExV3
{
    public UInt16 m_cbSize; // Structure size
    public Int32 m_time; // Transaction time
    public Single m_fHigh; // Maximum
    public Single m_fLow; // Minimum
    public Single m_fNewPrice; // Latest
    public Single m_fVolume; // Production volume
    public Single m_fAmount; // Production value
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public Single[] m_fputPrice; // Entry storage price 1,2,3
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public Single[] m_fputVolume; // Entry storage volume 1,2,3
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public Single[] m_ftransPrice; // Transfer application price 1,2,3
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public Single[] m_ftransVolume; // Transfer application volume 1,2,3
    public Single m_fputPrice4; // Entry storage price 4
    public Single m_fputVolume4; // Entry storage volume 4
    public Single m_ftransPrice4; // Transfer application price 4
    public Single m_ftransVolume4; // Transfer application volume 4
    public Single m_fputPrice5; // Entry storage price 5
    public Single m_fputVolume5; // Entry storage volume 5
    public Single m_ftransPrice5; // Transfer application price 5
    public Single m_ftransVolume5; // Transfer application volume 5
};


}


// Data notification message
// Direct data reference notification message
// wParam = RCV_WPARAM;
// lParam points to the RCV_DATA structure;
// Return 1 if processed, 0 if unprocessed or unable to process
// Note 1:
// The number of records represents the number of data packets of market data and supplementary data (including Header). For file type data, = 1
// Note 2:
// If m_bDISK = FALSE, m_pData is the data buffer pointer
// ******** Data sharing, do not modify data **********
// m_bDISK = TRUE, m_pData is the file storage name of the file. Generally, only large files such as upgrade software use the storage method
// [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_DATA
{
    public int m_wDataType; // File type
    public int m_nPacketNum; // Number of records, see Note 1
    public RCV_FILE_HEADEx m_File; // File interface
    public int m_bDISK; // Whether the file is stored
    public IntPtr m_pData;
};
// Tick data ///////////////////////////////////
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] 
public struct RCV_FENBI_STRUCTEx
{
    public int m_lTime; // hhmmss Example: 93056 indicates 9:
    public Single m_fHigh; // Maximum
    public Single m_fLow; // Minimum 
    public Single m_fNewPrice; // Latest 
    public Single m_fVolume; // Production volume
    public Single m_fAmount; // Production value
    public int m_lStroke; // Reserved
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
    public Single[] m_fputPrice; // Entry storage price 1,2,3,4,5
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
    public Single[] m_fputVolume; // Entry storage volume 1,2,3,4,5
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
    public Single[] m_ftransPrice; // Transfer application price 1,2,3,4,5
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
    public Single[] m_ftransVolume; // Transfer application volume 1,2,3,4,5
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] 
public struct RCV_FENBI
{
    public UInt16 m_wMarket; // Customer market type
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
    public char[] m_szLabel; // Customer code, ending with '\0'
    public Int32 m_lDate; // Date of tick data FORMAT:
    public Single m_fLastClose; // Yesterday's closing price
    public Single m_fOpen; // Today's opening price
    public UInt16 m_nCount; // Data quantity of m_Data, number of ticks
    public IntPtr m_Data; // Length is m_nCount
};


// Message processing program DEMO
protected override void WndProc(ref System.Windows.Forms.Message m)
{
    // Detect message type 
    switch (m.WParam.ToInt32())
    { 
        case RCV_REPORT: // Shared data reference mode, customer market
        {
            RCV_DATA pHeader = PRCV_DATA(m.lParam);
            for (i = 0; i < pHeader.m_nPacketNum - 1; i++)
            {
                // Data processing
            }
        }

        case RCV_FENBIDATA: { 
            // Interface-supplemented tick data, which refers to the tick data of the day
            break;
        }
        RCV_MKTTBLDATA :{
            // Received code table data
            break;
        }
        RCV_FINANCEDATA :{
            // Received financial data
            break;
        }
    }
}
//////////////////////////////////////////////////////////////////////////////////
// APIs
//////////////////////////////////////////////////////////////////////////////////
// Registration function
// Customer initialization
// Entry parameters:
// hWnd Window handle for processing messages
// Msg User-defined message
// nWorkMode Interface work mode, see work mode type definition
// Return parameters:
// 1 Success 
// -1 Failure
// Note:
// After registration, the driver will send messages to the processing window; if not registered, data can also be obtained through query
// If the customer receiving is not started, start the customer receiving program
public delegate int Stock_Init(IntPtr nHwnd, int nMsg, int nWorkMode);
// Exit, stop sending messages
// Entry parameters:
// hWnd Window handle for processing messages, the same as the calling entry parameter of Stock_Init
// Return parameters:
// 1 Success 
// -1 Failure
public delegate int Stock_Quit(IntPtr nHwnd);
// Activate the receiving program for setting
// Entry parameters:
// bSetup TRUE Show window for setting
// FALSE Hide window
// Return parameters:
// 1 Success
// -1 Failure
public delegate int SetupReceiver(bool bShowWindow);
// Get customer driver information
// Entry parameters:
// nInfo Index
// pBuf Buffer
// Exit parameters:
// nInfo == RI_IDSTRING, return the length of the characteristic string, pBuf is the characteristic string
// Such as: "TongShi_StockDrv_1.00"
// nInfo == RI_IDCODE, return the information card ID number, pBuf is the ID number in string form
// Such as: 0x78001234 "78001234"
// nInfo == RI_VERSION, return the version number of the information card, pBuf is the version in string
// Such as: 1.00 "1.00" 
// nInfo == RI_V2SUPPORT, return whether the Shenzhen SJS library structure is supported, pBuf is invalid
public delegate int GetStockDrvInfo(int nInfo,IntPtr pBuf);
public delegate int ReInitStockInfo(); // Reserved function, not currently used