#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
/* Local headers */
#include "ablibs.h"
#include "abimport.h"
#include "proto.h"
#include <sys/dispatch.h>
#define ATTACH_POINT "Inter_channel"
typedef struct _pulse msg_header_t;
typedef struct _my_data {
msg_header_t hdr;
int len, maxX, maxY;
double h, dataX[100], dataY[100];
} my_data_t; // Формат отправляемого и принимаемого сообщения
my_data_t msg,// отправляемое сообщение
msg_reply; // принимаемое сообщение
int net_send();
char *file_name, // Имя открываемого файла
buf[40]; // Строка для промежуточного хранения данных
int bpointx = 119, // начало графика ( левая граница )
bpointy = 35, // начало графика ( верхняя граница )
epointx, epointy, // конец области рисования графика
dx, dy, // дискретизация сетки графика
h, i, k; // переменные для выполнения циклов
int //---------- Нажатакнопка Load and Run
Button1_Click( PtWidget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t *cbinfo ){
double scalex, scaley; // масштабпоосям
/* eliminate 'unreferenced' warnings */
widget = widget, apinfo = apinfo, cbinfo = cbinfo;
PtGetResource(ABW_Text, Pt_ARG_TEXT_STRING,&file_name, 0 );
buf[0] = '\0';
epointx = bpointx + 361 -2;
epointy = bpointy + 385 -4;
// ------- Net_send()
switch( net_send() ){
// ------- Удачно ли выполнилось net_send() ?
case 1:
PtSetResource(ABW_Label1, Pt_ARG_TEXT_STRING, "Not find File", 0 );
strcat(buf, "\"" );
strcat(buf, file_name );
strcat(buf, "\"" );
PtSetResource(ABW_Label2, Pt_ARG_TEXT_STRING, buf, 0 );
return( Pt_CONTINUE );
case 2:
PtSetResource(ABW_Label1, Pt_ARG_TEXT_STRING, "Not Attach to", 0 );
PtSetResource(ABW_Label2, Pt_ARG_TEXT_STRING, " channel ", 0 );
return( Pt_CONTINUE );
}
// Сообещение об удачном выполнении функции net_send()
PtSetResource(ABW_Label1, Pt_ARG_TEXT_STRING, "Sucsessful Load", 0 );
PtSetResource(ABW_Label2, Pt_ARG_TEXT_STRING, " ", 0 );
// Масштабированиеосейграфика
scalex = (double)(epointx - bpointx)/(double)msg_reply.maxX;
scaley = (double)(epointy - bpointy)/(double)msg_reply.maxY;
// Выводмасштабанаосиграфика
itoa( msg_reply.maxX, buf, 10 );
PtSetResource(ABW_Xm, Pt_ARG_TEXT_STRING,buf, 0 );
itoa( msg_reply.maxY, buf, 10 );
PtSetResource(ABW_Ym, Pt_ARG_TEXT_STRING,buf, 0 );
//---------------- Рисованиеграфика
PgSetStrokeColor( Pg_GREEN );
for( i=0; i<msg_reply.len-1; i++ ){
PgDrawILine( bpointx+(int)(msg_reply.dataX[i]*scalex),epointy-(int)(msg_reply.dataY[i]*scaley),
bpointx+(int)(msg_reply.dataX[i+1]*scalex),epointy- (int)(msg_reply.dataY[i+1]*scaley ) );
}
// Рисование сетки на графике
dx = 10; dy = 10;
PgSetStrokeColor( Pg_BLACK );
for( i=1; i<dx; i++ ){
h =( epointx-bpointx )/ dx;
PgDrawILine( bpointx+h*i, bpointy,bpointx+h*i, epointy );
}
for( i=1; i<dy; i++ ){
h =( epointy-bpointy )/ dy;
PgDrawILine( bpointx, bpointy+h*i, epointx,bpointy+h*i );
}
return( Pt_CONTINUE );
}
// NET SEND -read and send message
int net_send(){
int fd, i;
FILE *p; // ссылка на открываемый файл
char *combo_text, // строка для считывания идентификатора ( локальный или глобальный канал )
*str_step; // строка хранящая шаг интерполяции
// --------- Открытиефайла
if( (p = fopen( file_name, "r" )) == NULL ){
return 1;
}
// --------- Подключениекканалу
PtGetResource(ABW_Combo, Pt_ARG_TEXT_STRING,&combo_text, 0 );
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.