⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo.c

📁 赵应时遥感上机指导envi操作
💻 C
📖 第 1 页 / 共 2 页
字号:
							Index.Volume=s3tol(PackedIndex.Volume);////							SHIndex++;//							if(SHIndex>=SHMAX) SHIndex=0;//							sprintf(SHData[SHIndex],//							"[Index]  %u  %lx  %lx  %8.3f  %8.3f  %8.3f  %8ld",//							Index.TotalRows, Index.Date, Index.Time,Index.Index,//							Index.AIndex,Index.BIndex,Index.Volume);//							SHData[SHIndex][100]='\0';						}						else	// 各股						{							if((RowNumber &0x8000)==0)	// 不变量/微变量							{								RowNumber = RowNumber & 0x7fff;								if(RowNumber>=STOCKMAX) break;								pShNode[RowNumber].RowNumber = RowNumber;								memmove(IF.String,rs.Info,rs.InfoLength);								pShNode[RowNumber].StockNo = s3tol(IF.CR[0].StockNumber);								memmove(pShNode[RowNumber].StockName,IF.CR[0].StockName,8);								pShNode[RowNumber].StockName[8]='\0';								pShNode[RowNumber].LastClose=(unsigned short)IF.String[14];								pShNode[RowNumber].LastClose<<=8;								pShNode[RowNumber].LastClose|=(unsigned short)IF.String[13];								pShNode[RowNumber].Open=(unsigned short)IF.String[16];								pShNode[RowNumber].Open<<=8;								pShNode[RowNumber].Open|=(unsigned short)IF.String[15];								pShNode[RowNumber].flag = 0x01;																if(rs.InfoLength >= sizeof(IF.CR[0]) *2)								{									RowNumber = IF.CR[1].RowNumber & 0xfff;									if(RowNumber>=STOCKMAX) break;									pShNode[RowNumber].RowNumber=RowNumber;									memmove(IF.String,rs.Info,rs.InfoLength);									pShNode[RowNumber].StockNo = s3tol(IF.CR[1].StockNumber);									memmove(pShNode[RowNumber].StockName,IF.CR[1].StockName,8);									pShNode[RowNumber].StockName[8]='\0';									pShNode[RowNumber].LastClose=(unsigned short)IF.String[31];									pShNode[RowNumber].LastClose<<=8;									pShNode[RowNumber].LastClose|=IF.String[30];									pShNode[RowNumber].Open=(unsigned short)IF.String[33];									pShNode[RowNumber].Open<<=8;									pShNode[RowNumber].Open|=IF.String[32];									pShNode[RowNumber].flag = 0x01;								}							}							else						// 变化量							{								memmove(IF.String,rs.Info,rs.InfoLength);								RowNumber = IF.VR.RowNumber & 0x7fff;								if(RowNumber>=STOCKMAX) break;																	pShNode[RowNumber].Volume = (unsigned long)IF.String[4];								pShNode[RowNumber].Volume <<= 8;								pShNode[RowNumber].Volume |= (unsigned long)IF.String[3];								if(IF.VR.Factor & 1)									pShNode[RowNumber].Volume *= 100L;								pShNode[RowNumber].Amount = (unsigned long)IF.String[6];								pShNode[RowNumber].Amount <<= 8;								pShNode[RowNumber].Amount |= (unsigned long)IF.String[5];								if(IF.VR.Factor & 2)									pShNode[RowNumber].Amount *=10L;								pShNode[RowNumber].Highest = (unsigned long)IF.String[8];								pShNode[RowNumber].Highest <<= 8;								pShNode[RowNumber].Highest |= (unsigned long)IF.String[7];								pShNode[RowNumber].Lowest = (unsigned long)IF.String[10];								pShNode[RowNumber].Lowest <<= 8;								pShNode[RowNumber].Lowest |= (unsigned long)IF.String[9];								pShNode[RowNumber].Newest = (unsigned long)IF.String[12];								pShNode[RowNumber].Newest <<= 8;								pShNode[RowNumber].Newest |= (unsigned long)IF.String[11];								pShNode[RowNumber].Buy = (unsigned long)IF.String[14];								pShNode[RowNumber].Buy <<= 8;								pShNode[RowNumber].Buy |= (unsigned long)IF.String[13];								pShNode[RowNumber].Sell = (unsigned long)IF.String[16];								pShNode[RowNumber].Sell <<= 8;								pShNode[RowNumber].Sell |= (unsigned long)IF.String[15];																pShNode[RowNumber].BuyHands1 = (unsigned short)IF.String[18];								pShNode[RowNumber].BuyHands1 <<= 8;								pShNode[RowNumber].BuyHands1 |= (unsigned short)IF.String[17];								pShNode[RowNumber].BuyHands2 = (unsigned short)IF.String[20];								pShNode[RowNumber].BuyHands2 <<= 8;								pShNode[RowNumber].BuyHands2 |= (unsigned short)IF.String[19];								pShNode[RowNumber].BuyHands3 = (unsigned short)IF.String[22];								pShNode[RowNumber].BuyHands3 <<= 8;								pShNode[RowNumber].BuyHands3 |= (unsigned short)IF.String[21];																pShNode[RowNumber].BuyPrice2 =  pShNode[RowNumber].Buy - (unsigned long)IF.String[23];								pShNode[RowNumber].BuyPrice3 =  pShNode[RowNumber].Buy - (unsigned long)IF.String[24];																pShNode[RowNumber].SellHands1 = (unsigned short)IF.String[26];								pShNode[RowNumber].SellHands1 <<= 8;								pShNode[RowNumber].SellHands1 |= (unsigned short)IF.String[25];								pShNode[RowNumber].SellHands2 = (unsigned short)IF.String[28];								pShNode[RowNumber].SellHands2 <<= 8;								pShNode[RowNumber].SellHands2 |= (unsigned short)IF.String[27];								pShNode[RowNumber].SellHands3 = (unsigned short)IF.String[30];								pShNode[RowNumber].SellHands3 <<= 8;								pShNode[RowNumber].SellHands3 |= (unsigned short)IF.String[29];																pShNode[RowNumber].SellPrice2 = pShNode[RowNumber].Sell + (unsigned long)IF.String[31];								pShNode[RowNumber].SellPrice3 = pShNode[RowNumber].Sell + (unsigned long)IF.String[32];								pShNode[RowNumber].flag |= 2;																tn=pShNode[RowNumber];								if(tn.flag == 3)								{									SHIndex++;									if(SHIndex>=SHMAX) SHIndex=0;									sprintf(SHData[SHIndex],										"%06ld %s %7.2f %7.2f %7.2f %7.2f %7.2f %10ld %10ld",										tn.StockNo, tn.StockName, Divide100(tn.LastClose),										Divide100(tn.Open), Divide100(tn.Highest), Divide100(tn.Lowest),										Divide100(tn.Newest), tn.Volume, tn.Amount);									SHData[SHIndex][100]='\0';								}							}						}											}					else if( (rs.Address == 0x3L) && (rs.AL == 1) )					{						RowNumber = rs.Info[1];						RowNumber <<=8;						RowNumber |= rs.Info[0];												if(RowNumber == 0)	// 指数						{							memmove(IndexStr.str,rs.Info,rs.InfoLength);							PackedIndex = IndexStr.Index;														Index.RowNumber=RowNumber;							Index.TotalRows=PackedIndex.TotalRows;							Index.Date=s3tol(PackedIndex.Date);							Index.Time=s3tol(PackedIndex.Time);							Index.Index=s3tol(PackedIndex.Index);							Index.AIndex=s3tol(PackedIndex.AIndex);							Index.BIndex=s3tol(PackedIndex.BIndex);							Index.Volume=s3tol(PackedIndex.Volume);//							SZIndex++;//							if(SZIndex>=SZMAX) SZIndex=0;//							sprintf(SZData[SZIndex],"[Index]  %u  %lx  %lx  %8.3f  %8.3f  %8.3f  %8ld",//									Index.TotalRows,Index.Date,Index.Time,Index.Index,//							Index.AIndex,Index.BIndex,Index.Volume);//							SZData[SZIndex][100]='\0';						}						else	// 各股						{							if((RowNumber &0x8000)==0)	// 不变量/微变量							{								RowNumber = RowNumber & 0x7fff;								if(RowNumber>=STOCKMAX) break;								pSzNode[RowNumber].RowNumber = RowNumber;								memmove(IF.String,rs.Info,rs.InfoLength);								pSzNode[RowNumber].StockNo = s3tol(IF.CR[0].StockNumber);								memmove(pSzNode[RowNumber].StockName,IF.CR[0].StockName,8);								pSzNode[RowNumber].StockName[8]='\0';								pSzNode[RowNumber].LastClose=(unsigned short)IF.String[14];								pSzNode[RowNumber].LastClose<<=8;								pSzNode[RowNumber].LastClose|=(unsigned short)IF.String[13];								pSzNode[RowNumber].Open=(unsigned short)IF.String[16];								pSzNode[RowNumber].Open<<=8;								pSzNode[RowNumber].Open|=(unsigned short)IF.String[15];								pSzNode[RowNumber].flag = 0x01;																if(rs.InfoLength >= sizeof(IF.CR[0]) *2)								{									RowNumber = IF.CR[1].RowNumber & 0x7fff;									if(RowNumber>=STOCKMAX) break;									pSzNode[RowNumber].RowNumber=RowNumber;									memmove(IF.String,rs.Info,rs.InfoLength);									pSzNode[RowNumber].StockNo = s3tol(IF.CR[1].StockNumber);									memmove(pSzNode[RowNumber].StockName,IF.CR[1].StockName,8);									pSzNode[RowNumber].StockName[8]='\0';									pSzNode[RowNumber].LastClose=(unsigned short)IF.String[31];									pSzNode[RowNumber].LastClose<<=8;									pSzNode[RowNumber].LastClose|=IF.String[30];									pSzNode[RowNumber].Open=(unsigned short)IF.String[33];									pSzNode[RowNumber].Open<<=8;									pSzNode[RowNumber].Open|=IF.String[32];									pSzNode[RowNumber].flag = 0x01;								}							}							else						// 变化量							{								memmove(IF.String,rs.Info,rs.InfoLength);								RowNumber = IF.VR.RowNumber & 0x7fff;								if(RowNumber>=STOCKMAX) break;																	pSzNode[RowNumber].Volume = (unsigned short)IF.String[4];								pSzNode[RowNumber].Volume <<= 8;								pSzNode[RowNumber].Volume |= (unsigned short)IF.String[3];								if(IF.VR.Factor & 1)									pSzNode[RowNumber].Volume *= 100L;								pSzNode[RowNumber].Amount = (unsigned short)IF.String[6];								pSzNode[RowNumber].Amount <<= 8;								pSzNode[RowNumber].Amount |= (unsigned short)IF.String[5];								if(IF.VR.Factor & 2)									pSzNode[RowNumber].Amount *=10L;								pSzNode[RowNumber].Highest = (unsigned short)IF.String[8];								pSzNode[RowNumber].Highest <<= 8;								pSzNode[RowNumber].Highest |= (unsigned short)IF.String[7];								pSzNode[RowNumber].Lowest = (unsigned short)IF.String[10];								pSzNode[RowNumber].Lowest <<= 8;								pSzNode[RowNumber].Lowest |= (unsigned short)IF.String[9];								pSzNode[RowNumber].Newest = (unsigned short)IF.String[12];								pSzNode[RowNumber].Newest <<= 8;								pSzNode[RowNumber].Newest |= (unsigned short)IF.String[11];								pSzNode[RowNumber].Buy = (unsigned short)IF.String[14];								pSzNode[RowNumber].Buy <<= 8;								pSzNode[RowNumber].Buy |= (unsigned short)IF.String[13];								pSzNode[RowNumber].Sell = (unsigned short)IF.String[16];								pSzNode[RowNumber].Sell <<= 8;								pSzNode[RowNumber].Sell |= (unsigned short)IF.String[15];																pSzNode[RowNumber].BuyHands1 = (unsigned short)IF.String[18];								pSzNode[RowNumber].BuyHands1 <<= 8;								pSzNode[RowNumber].BuyHands1 |= (unsigned short)IF.String[17];								pSzNode[RowNumber].BuyHands2 = (unsigned short)IF.String[20];								pSzNode[RowNumber].BuyHands2 <<= 8;								pSzNode[RowNumber].BuyHands2 |= (unsigned short)IF.String[19];								pSzNode[RowNumber].BuyHands3 = (unsigned short)IF.String[22];								pSzNode[RowNumber].BuyHands3 <<= 8;								pSzNode[RowNumber].BuyHands3 |= (unsigned short)IF.String[21];																pSzNode[RowNumber].BuyPrice2 =  pSzNode[RowNumber].Buy - (unsigned short)IF.String[23];								pSzNode[RowNumber].BuyPrice3 =  pSzNode[RowNumber].Buy - (unsigned short)IF.String[24];																pSzNode[RowNumber].SellHands1 = (unsigned short)IF.String[26];								pSzNode[RowNumber].SellHands1 <<= 8;								pSzNode[RowNumber].SellHands1 |= (unsigned short)IF.String[25];								pSzNode[RowNumber].SellHands2 = (unsigned short)IF.String[28];								pSzNode[RowNumber].SellHands2 <<= 8;								pSzNode[RowNumber].SellHands2 |= (unsigned short)IF.String[27];								pSzNode[RowNumber].SellHands3 = (unsigned short)IF.String[30];								pSzNode[RowNumber].SellHands3 <<= 8;								pSzNode[RowNumber].SellHands3 |= (unsigned short)IF.String[29];																pSzNode[RowNumber].SellPrice2 = pSzNode[RowNumber].Sell + (unsigned short)IF.String[31];								pSzNode[RowNumber].SellPrice3 = pSzNode[RowNumber].Sell + (unsigned short)IF.String[32];								pSzNode[RowNumber].flag |= 2;																tn=pSzNode[RowNumber];								if(tn.flag == 3)								{									SZIndex++;									if(SZIndex>=SZMAX) SZIndex=0;									sprintf(SZData[SZIndex],										"%04ld   %s %7.2f %7.2f %7.2f %7.2f %7.2f %10ld %10ld",										tn.StockNo, tn.StockName, Divide100(tn.LastClose),										Divide100(tn.Open), Divide100(tn.Highest), Divide100(tn.Lowest),										Divide100(tn.Newest), tn.Volume, tn.Amount);									SZData[SZIndex][100]='\0';								}							}						}					}					else if( (rs.Address >= 0x0L) && (rs.Address <= 0x7L) && (rs.AL == 2) )					{						i++;					}				}			}//			lpFunction = GetProcAddress(hLibrary, "CtrlIntr");//			(* lpFunction)(1);			InvalidateRect(hWnd, &SHDataRect, FALSE); // 画提示信息.			InvalidateRect(hWnd, &SZDataRect, FALSE); // 画提示信息.			InvalidateRect(hWnd, &TotalRect, FALSE); // 画提示信息.			break;		case WM_COMMAND:            switch (LOWORD(wParam))			{                case IDM_ABOUT:                    DialogBox(hInst, "ABOUTBOX", hWnd, About);                    break;				case IDM_QUIT:					PostQuitMessage(0);					break;            }            break;        case WM_DESTROY:			lpFunction = GetProcAddress(hLibrary, "RetrieveCard");			(* lpFunction)();			FreeLibrary(hLibrary);            PostQuitMessage(0);            break;        default:            return (DefWindowProc(hWnd, message, wParam, lParam));    }    return (0);}//---------------------------------------------------------------------------------BOOL CALLBACK About(HWND hDlg, UINT message, UINT wParam, LONG lParam){    switch (message)	{        case WM_INITDIALOG:			return (TRUE);        case WM_COMMAND:            if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)			{				EndDialog(hDlg, TRUE);                return (TRUE);            }		return (TRUE);    }	return (FALSE);	UNREFERENCED_PARAMETER(lParam);}void ExpandData(unsigned long * target, unsigned char * source, int Factor){	int i;	long l;	l=0;	Factor = 3 - Factor;	for(i = 2; i >= 0; i--)	{		l <<= 8;		l |= source[i];	}	for(i=0; i<Factor; i++)		l *= 10;	*target = l;	return;}unsigned long s3tol(unsigned char string[]){	int i;	unsigned long l=0L;	unsigned long l1;	for(i=0;i<3;i++)	{		l1 = string[i];		l1 <<= 8*(2-i);		l |= l1;	}	return l;}float Divide100(unsigned long Number){	return((float)(Number/100.0));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -