cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP 19 is here! See the new features at jmp.com/new.
  • Due to global connectivity issues impacting AWS Services, users may experience unexpected errors while attempting to authorize JMP. Please try again later or contact support@jmp.com to be notified once all issues are resolved.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar

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

 

My operating system is 64-bit Windows 10.

 

Thanks Experts!

6 REPLIES 6
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

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.

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
Craige_Hales
Super User

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

The JMP C# automation examples might help. I think automation might be the keyword you are looking for.

Craige

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

Thanks Experts!

 

https://community.jmp.com/t5/Discussions/Create-JMP-datatable-from-C-DataTable-variable/m-p/49392

https://community.jmp.com/t5/Discussions/Create-JMP-datatable-from-C-DataTable-variable/m-p/49392 

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

Read these posts.But the subject is too difficult for me.No similar examples are found.


Thanks Experts!

Recommended Articles