tags:

views:

70

answers:

1

we can now generate about 50000bits. my code cannot generate more than 60000 bit..please help me............m_B is member variable and type is CString.

// LFSR_ECDlg.cpp : implementation file
//

#include "stdafx.h"
#include "myecc.h"
#include "LFSR_ECDlg.h"
#include "MyClass.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern MyClass mycrv;
/////////////////////////////////////////////////////////////////////////////
// LFSR_ECDlg dialog


LFSR_ECDlg::LFSR_ECDlg(CWnd* pParent /*=NULL*/)
    : CDialog(LFSR_ECDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(LFSR_ECDlg)
    m_C1 = 0;
    m_C2 = 0;
    m_B = _T("");
    m_p = _T("");
    m_Qty = 0;
    m_time = _T("");
    //}}AFX_DATA_INIT
}


void LFSR_ECDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(LFSR_ECDlg)
    DDX_Text(pDX, IDC_C1, m_C1);
    DDX_Text(pDX, IDC_C2, m_C2);
    DDX_Text(pDX, IDC_Sequence, m_B);
    DDX_Text(pDX, IDC_Sequence2, m_p);
    DDX_Text(pDX, IDC_QTY, m_Qty);
    DDV_MinMaxLong(pDX, m_Qty, 0, 2147483647);
    DDX_Text(pDX, IDC_time, m_time);
    //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(LFSR_ECDlg, CDialog)
    //{{AFX_MSG_MAP(LFSR_ECDlg)
    ON_WM_SETCURSOR()
    ON_EN_CHANGE(IDC_Sequence, OnGeneratorLFSR)
    ON_MESSAGE(WM_MYPAINTMESSAGE,PaintMyCaption)//by ttyu
    ON_BN_CLICKED(IDC_save, Onsave)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// LFSR_ECDlg message handlers

bool LFSR_ECDlg::CheckDataEntry()
{

//if((m_Px>=mycrv.p)|(m_Py>=mycrv.p)) {AfxMessageBox("Seed [P] is invalid!");return false;}//by ttyu
    if((m_C1<=0) | (m_C1>mycrv.n)) {AfxMessageBox("Constant c1 is not valid!");return false;}
    if((m_C2<=0 )| (m_C2>mycrv.n)) {AfxMessageBox("Constant c2  is not valid!");return false;}


return true;

}

void LFSR_ECDlg::OnOK() 
{
    UpdateData(true);
static int stime,etime,dtime;
    CString txt;
    m_time="";
    CTime t(CTime::GetCurrentTime());  
CString txt1;
        txt1="";

    //ms = t.GetDay();  // TODO: Add extra validation here
    stime=t.GetTime();
    txt1.Format("%d",stime);
        AfxMessageBox (txt1);

    txt="";
        if (CheckDataEntry()) OnGeneratorLFSR();
        etime=t.GetTime();
        CString txt2;
        txt2="";
        txt2.Format("%d",etime);
        AfxMessageBox (txt2);
        dtime=etime-stime;
        txt.Format("%f",dtime);
        m_time+=txt;
    //  UpdateData(false);
//rtime.Format("%s, %s %d, %d.",day,month,dd,yy);
    //CDialog::OnOK();
}

void LFSR_ECDlg::OnCancel() 
{
    // TODO: Add extra cleanup here

    CDialog::OnCancel();
}


void LFSR_ECDlg::OnGeneratorLFSR() 
{
    // TODO: If this is a RICHEDIT control, the control will not
    // send this notification unless you override the CDialog::OnInitDialog()
    // function and call CRichEditCtrl().SetEventMask()
    // with the ENM_CHANGE flag ORed into the mask.

    // TODO: Add your control notification handler code here
    point P0,P1,P2;

    P0 = mycrv.G;
    P1 = mycrv.MulPoint(P0,2);

    int C1=m_C1, C2=m_C2, n=m_Qty, k=0;
    int q= (mycrv.p-1) / 2;

    m_p = "";
    m_B = "";

    CString txt;

    for(int i=0;i<n;i++)
    {
        txt="";
        if(P0==mycrv.O) txt.Format("O");
        else txt.Format("(%d, %d)",P0.x,P0.y);
        m_p +=txt;
        m_p += 13;
        m_p += 10;

        if((P0.y >= 0)&&(P0.y <= q)) m_B += "0";
        else if(P0 == mycrv.O) m_B += "0";
        else m_B += "1";
        //m_B += 13;//by ttyu
    //  m_B += 10;//by ttyu

        P2 = mycrv.AddPoints(mycrv.MulPoint(P1,C2), mycrv.MulPoint(P0,C1));
        P0 = P1;
        P1 = P2;
    }

}


BOOL LFSR_ECDlg::OnInitDialog() 
{
    CDialog::OnInitDialog();

    // TODO: Add extra initialization here

    //code for dlg bar
    CString str="LFSR_EC";
    m_cap.SetCaption (str);
    m_cap.Install (this,WM_MYPAINTMESSAGE);
    //////////////////////////////

    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}

LRESULT LFSR_ECDlg::PaintMyCaption(WPARAM wp, LPARAM lp)
{
    m_cap.PaintCaption(wp,lp);
    return 0;
}



BOOL LFSR_ECDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
    // TODO: Add your message handler code here and/or call default

    return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

void LFSR_ECDlg::Onsave() 
{
this->UpdateData();

    CFile bitstream;
    char strFilter[] = { "Stream Records (*.mpl)|*.mpl| (*.pis)|*.pis|All Files (*.*)|*.*||" };

    CFileDialog FileDlg(FALSE, ".mpl", NULL, 0, strFilter);

//insertion//by TTT

    CFile cf_object;
    if( FileDlg.DoModal() == IDOK ){
    cf_object.Open( FileDlg.GetFileName(), CFile::modeCreate|CFile::modeWrite);
    //char szText[100];
    //strcpy(szText, "File Write Test");
        CString txt;
        txt="";
        txt.Format("%s",m_B);//by ANO
        AfxMessageBox (txt);//by ANO
    int mB_size=m_B.GetLength();
    cf_object.Write (m_B,mB_size); 

    //insertion end




/*  if( FileDlg.DoModal() == IDOK )
    {
        if( bitstream.Open(FileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite) == FALSE )
            return;
        CArchive ar(&bitstream, CArchive::store);


        CString txt;
        txt="";
        txt.Format("%s",m_B);//by ANO
        AfxMessageBox (txt);//by ANO
        //txt=m_B;//by ANO
        ar <<txt;//by ANO

        ar.Close();
    }
    else
        return;

    bitstream.Close();
    */
    // TODO: Add your control notification handler code here




}
}
+2  A: 

Please write a question that is answerable.

InsertNickHere
how can we generate the bit greater than 60000?
thinthinyu
we can now generate about 50000bits. my code cannot generate more than 60000 bit..please help me............m_B is member variable and type is CString.
thinthinyu
What do you MEAN when you say "generating the bit greater than 60000"? What bits? How do you generate them and what for? What is your error, what does not work? Your code is not easy to understand - it does not helt at this time to understand you.
InsertNickHere
i want to generate binary bit string from LFSR. In m_B, we display 0 and 1 binary string which is generated from LFSR. I mean that i want to generate the num of 0 and 1 more than 60000. In this code n=m_Qty is the user input (no. of binary num we want to generate). when i insert n_Qty >60000 , any binary stream can not generated. i don't know about this problem because of data type or other problems. i generate this binary stream to test randomize sequence. thank you for your interest and help.
thinthinyu