mirror of
https://github.com/eddyem/SBIG_340.git
synced 2025-12-06 10:45:10 +03:00
little fix
This commit is contained in:
parent
c2a06aac3a
commit
f08fe7fc31
2
Makefile
2
Makefile
@ -19,7 +19,7 @@ debayer.o : debayer.cpp
|
|||||||
|
|
||||||
sbig340 : $(SRCS) debayer.o
|
sbig340 : $(SRCS) debayer.o
|
||||||
@echo -e "\t\tBuild sbig340"
|
@echo -e "\t\tBuild sbig340"
|
||||||
$(CC) -DDAEMON $(CFLAGS) -std=gnu99 $(DEFINES) $(LDFLAGS) $(LDIMG) $(SRCS) -o $@
|
$(CC) $(CFLAGS) -std=gnu99 $(DEFINES) $(LDFLAGS) $(LDIMG) $(SRCS) debayer.o -o $@
|
||||||
|
|
||||||
# $(CC) -c $(CFLAGS) -std=gnu99 $(DEFINES) $(SRCS)
|
# $(CC) -c $(CFLAGS) -std=gnu99 $(DEFINES) $(SRCS)
|
||||||
# $(CPP) $(LDFLAGS) $(OBJS) debayer.o -o $@
|
# $(CPP) $(LDFLAGS) $(OBJS) debayer.o -o $@
|
||||||
|
|||||||
13
debayer.cpp
13
debayer.cpp
@ -54,6 +54,19 @@ static int write_jpeg(const char *fname, const uint8_t *data, imstorage *img){
|
|||||||
gdFTUseFontConfig(1);
|
gdFTUseFontConfig(1);
|
||||||
char *ret = gdImageStringFT(im, NULL, 0xffffff, "monotype", 10, 0., 2, 12, date);
|
char *ret = gdImageStringFT(im, NULL, 0xffffff, "monotype", 10, 0., 2, 12, date);
|
||||||
if(ret) fprintf(stderr, "Error: %s\n", ret);
|
if(ret) fprintf(stderr, "Error: %s\n", ret);
|
||||||
|
const char *prefx = "";
|
||||||
|
double ex = img->exptime;
|
||||||
|
if(ex < 1.){
|
||||||
|
if(ex < 0.001){ // micro
|
||||||
|
prefx = "u";
|
||||||
|
ex *= 1e6;
|
||||||
|
}else{ // milli
|
||||||
|
prefx = "m";
|
||||||
|
ex *= 1e3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
snprintf(date, 256, "exp=%.3g %ss", ex, prefx);
|
||||||
|
gdImageStringFT(im, NULL, 0xffffff, "monotype", 10, 0., 2, img->H-4, date);
|
||||||
im->tpixels[10][10] = 0XFF0000;
|
im->tpixels[10][10] = 0XFF0000;
|
||||||
im->tpixels[15][15] = 0XFF0000;
|
im->tpixels[15][15] = 0XFF0000;
|
||||||
gdImageJpeg(im, fp, 90);
|
gdImageJpeg(im, fp, 90);
|
||||||
|
|||||||
7
main.c
7
main.c
@ -56,7 +56,10 @@ int main(int argc, char **argv){
|
|||||||
imsubframe *F = NULL;
|
imsubframe *F = NULL;
|
||||||
|
|
||||||
#ifndef CLIENT
|
#ifndef CLIENT
|
||||||
if(G->splist) list_speeds();
|
if(G->splist){
|
||||||
|
list_speeds();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if(!try_connect(G->device, G->speed)){
|
if(!try_connect(G->device, G->speed)){
|
||||||
WARNX(_("Check power and connection: device not answer!"));
|
WARNX(_("Check power and connection: device not answer!"));
|
||||||
return 1;
|
return 1;
|
||||||
@ -92,7 +95,7 @@ int main(int argc, char **argv){
|
|||||||
img->binning = G->binning;
|
img->binning = G->binning;
|
||||||
|
|
||||||
if(start_exposition(img, G->imtype)){ // start test exposition even in daemon
|
if(start_exposition(img, G->imtype)){ // start test exposition even in daemon
|
||||||
WARNX(_("Error starting exposition"));
|
ERRX(_("Error starting exposition"));
|
||||||
}else{
|
}else{
|
||||||
if(!get_imdata(img)){
|
if(!get_imdata(img)){
|
||||||
WARNX(_("Error image transfer"));
|
WARNX(_("Error image transfer"));
|
||||||
|
|||||||
@ -20,26 +20,21 @@ indent_mode=3
|
|||||||
[project]
|
[project]
|
||||||
name=SBIG340
|
name=SBIG340
|
||||||
base_path=/home/eddy/Docs/SAO/Cameras/SBIG/allsky_340/SBIG_340/
|
base_path=/home/eddy/Docs/SAO/Cameras/SBIG/allsky_340/SBIG_340/
|
||||||
|
description=
|
||||||
|
|
||||||
[long line marker]
|
[long line marker]
|
||||||
long_line_behaviour=1
|
long_line_behaviour=1
|
||||||
long_line_column=100
|
long_line_column=100
|
||||||
|
|
||||||
[files]
|
[files]
|
||||||
current_page=12
|
current_page=5
|
||||||
FILE_NAME_0=684;Make;0;EUTF-8;1;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2FMakefile;0;4
|
FILE_NAME_0=2657;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fmain.c;0;4
|
||||||
FILE_NAME_1=1058;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fmain.c;0;4
|
FILE_NAME_1=3442;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fimfunctions.c;0;4
|
||||||
FILE_NAME_2=3665;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fcmdlnopts.c;0;4
|
FILE_NAME_2=1637;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fimfunctions.h;0;4
|
||||||
FILE_NAME_3=2158;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fcmdlnopts.h;0;4
|
FILE_NAME_3=1077;C;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fdebayer.h;0;4
|
||||||
FILE_NAME_4=2541;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fterm.c;0;4
|
FILE_NAME_4=2547;C++;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fdebayer.cpp;0;4
|
||||||
FILE_NAME_5=3090;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fterm.h;0;4
|
FILE_NAME_5=707;Make;0;EUTF-8;1;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2FMakefile;0;4
|
||||||
FILE_NAME_6=2204;C;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fimfunctions.h;0;4
|
FILE_NAME_6=11756;C;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fsocket.c;0;4
|
||||||
FILE_NAME_7=14598;C;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Fimfunctions.c;0;4
|
|
||||||
FILE_NAME_8=736;C++;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2Fdemosaic%2Fsrc%2Fio_tiff.cpp;0;4
|
|
||||||
FILE_NAME_9=959;C;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2Fdemosaic%2Fsrc%2Fio_tiff.h;0;4
|
|
||||||
FILE_NAME_10=4748;C++;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2Fdemosaic%2Fsrc%2FdemosaickingIpol.cpp;0;4
|
|
||||||
FILE_NAME_11=1322;C;0;EUTF-8;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2Ftestimages%2Finotify.c;0;4
|
|
||||||
FILE_NAME_12=67;Markdown;0;EKOI8-R;0;1;0;%2Fhome%2Feddy%2FDocs%2FSAO%2FCameras%2FSBIG%2Fallsky_340%2FSBIG_340%2FReadme.md;0;4
|
|
||||||
|
|
||||||
[VTE]
|
[VTE]
|
||||||
last_dir=/home/eddy/Docs/SAO/Cameras/FLI_camera/my/Mytakepic
|
last_dir=/home/eddy/Docs/SAO/Cameras/FLI_camera/my/Mytakepic
|
||||||
|
|||||||
6
socket.c
6
socket.c
@ -172,6 +172,8 @@ int send_ima(int sock, int webquery){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
rest -= imS;
|
rest -= imS;
|
||||||
|
// send data
|
||||||
|
size_t send = BUFLEN10 - rest;
|
||||||
// OK buffer ready, prepare to send it
|
// OK buffer ready, prepare to send it
|
||||||
if(webquery){
|
if(webquery){
|
||||||
Len = snprintf((char*)obuff, BUFLEN,
|
Len = snprintf((char*)obuff, BUFLEN,
|
||||||
@ -179,7 +181,7 @@ int send_ima(int sock, int webquery){
|
|||||||
"Access-Control-Allow-Origin: *\r\n"
|
"Access-Control-Allow-Origin: *\r\n"
|
||||||
"Access-Control-Allow-Methods: GET, POST\r\n"
|
"Access-Control-Allow-Methods: GET, POST\r\n"
|
||||||
"Access-Control-Allow-Credentials: true\r\n"
|
"Access-Control-Allow-Credentials: true\r\n"
|
||||||
"Content-type: multipart/form-data\r\nContent-Length: %zd\r\n\r\n", Len);
|
"Content-type: multipart/form-data\r\nContent-Length: %zd\r\n\r\n", send);
|
||||||
if(Len < 0){
|
if(Len < 0){
|
||||||
WARN("sprintf()");
|
WARN("sprintf()");
|
||||||
return 0;
|
return 0;
|
||||||
@ -190,8 +192,6 @@ int send_ima(int sock, int webquery){
|
|||||||
}
|
}
|
||||||
DBG("%s", obuff);
|
DBG("%s", obuff);
|
||||||
}
|
}
|
||||||
// send data
|
|
||||||
size_t send = BUFLEN10 - rest;
|
|
||||||
red("send %zd bytes\n", send);
|
red("send %zd bytes\n", send);
|
||||||
if(send != (size_t)write(sock, buf, send)){
|
if(send != (size_t)write(sock, buf, send)){
|
||||||
WARN("write()");
|
WARN("write()");
|
||||||
|
|||||||
8
term.c
8
term.c
@ -99,7 +99,7 @@ trans_status wait_checksum(){
|
|||||||
double d0 = dtime();
|
double d0 = dtime();
|
||||||
do{
|
do{
|
||||||
if((r = read_tty(&chr, 1)) && chr == last_chksum) break;
|
if((r = read_tty(&chr, 1)) && chr == last_chksum) break;
|
||||||
DBG("wait..");
|
//DBG("wait..");
|
||||||
}while(dtime() - d0 < WAIT_TMOUT);
|
}while(dtime() - d0 < WAIT_TMOUT);
|
||||||
if(dtime() - d0 >= WAIT_TMOUT) return TRANS_TIMEOUT;
|
if(dtime() - d0 >= WAIT_TMOUT) return TRANS_TIMEOUT;
|
||||||
DBG("chksum: got 0x%x, need 0x%x", chr, last_chksum);
|
DBG("chksum: got 0x%x, need 0x%x", chr, last_chksum);
|
||||||
@ -308,7 +308,7 @@ void run_terminal(){
|
|||||||
setup_con();
|
setup_con();
|
||||||
while(1){
|
while(1){
|
||||||
if((L = read_tty(buf, BUFLEN))){
|
if((L = read_tty(buf, BUFLEN))){
|
||||||
printf(_("Get data: "));
|
printf(_("Get %zd bytes: "), L);
|
||||||
uint8_t *ptr = buf;
|
uint8_t *ptr = buf;
|
||||||
while(L--){
|
while(L--){
|
||||||
uint8_t c = *ptr++;
|
uint8_t c = *ptr++;
|
||||||
@ -640,8 +640,8 @@ uint16_t *get_image(imstorage *img){
|
|||||||
l -= r;
|
l -= r;
|
||||||
}
|
}
|
||||||
}while(l && dtime() - d0 < IMTRANS_TMOUT);
|
}while(l && dtime() - d0 < IMTRANS_TMOUT);
|
||||||
//DBG("got: %zd", got);
|
//DBG("got: %zd, time: %g, l=%zd", got, dtime()-d0, l);
|
||||||
if(got < 3){
|
if(l){
|
||||||
cs = IMTRANS_STOP;
|
cs = IMTRANS_STOP;
|
||||||
write_tty(&cs, 1);
|
write_tty(&cs, 1);
|
||||||
return NULL; // nothing to read
|
return NULL; // nothing to read
|
||||||
|
|||||||
27
term.h
27
term.h
@ -23,6 +23,20 @@
|
|||||||
#define __TERM_H__
|
#define __TERM_H__
|
||||||
#include "imfunctions.h"
|
#include "imfunctions.h"
|
||||||
|
|
||||||
|
// terminal timeout (seconds)
|
||||||
|
#define WAIT_TMOUT (0.2)
|
||||||
|
// timeout waitint 'D'
|
||||||
|
#define EXP_DONE_TMOUT (5.0)
|
||||||
|
// dataportion transfer timeout
|
||||||
|
#define IMTRANS_TMOUT (3.0)
|
||||||
|
// image size
|
||||||
|
#define IMWIDTH (640)
|
||||||
|
#define IM_CROPWIDTH (512)
|
||||||
|
#define IMHEIGHT (480)
|
||||||
|
#define MAX_SUBFRAME_SZ (127)
|
||||||
|
// maximal expposition time in 100th of us
|
||||||
|
#define MAX_EXPTIME_100 ((uint64_t)0x63ffff)
|
||||||
|
|
||||||
// communication errors
|
// communication errors
|
||||||
typedef enum{
|
typedef enum{
|
||||||
TRANS_SUCCEED = 0, // no errors
|
TRANS_SUCCEED = 0, // no errors
|
||||||
@ -40,19 +54,6 @@ typedef enum{
|
|||||||
HEATER_OFF // turn off
|
HEATER_OFF // turn off
|
||||||
} heater_cmd;
|
} heater_cmd;
|
||||||
|
|
||||||
// terminal timeout (seconds)
|
|
||||||
#define WAIT_TMOUT (0.2)
|
|
||||||
// timeout waitint 'D'
|
|
||||||
#define EXP_DONE_TMOUT (5.0)
|
|
||||||
// dataportion transfer timeout
|
|
||||||
#define IMTRANS_TMOUT (1.0)
|
|
||||||
// image size
|
|
||||||
#define IMWIDTH (640)
|
|
||||||
#define IM_CROPWIDTH (512)
|
|
||||||
#define IMHEIGHT (480)
|
|
||||||
#define MAX_SUBFRAME_SZ (127)
|
|
||||||
// maximal expposition time in 100th of us
|
|
||||||
#define MAX_EXPTIME_100 ((uint64_t)0x63ffff)
|
|
||||||
/******************************** Commands definition ********************************/
|
/******************************** Commands definition ********************************/
|
||||||
// communications test
|
// communications test
|
||||||
#define CMD_COMM_TEST 'E'
|
#define CMD_COMM_TEST 'E'
|
||||||
|
|||||||
@ -294,17 +294,25 @@ void tty_init(char *comdev, tcflag_t speed){
|
|||||||
signals(11);
|
signals(11);
|
||||||
}
|
}
|
||||||
DBG("Open port...");
|
DBG("Open port...");
|
||||||
if ((comfd = open(comdev,O_RDWR|O_NOCTTY|O_NONBLOCK)) < 0){
|
do{
|
||||||
WARN("Can't use port %s\n",comdev);
|
comfd = open(comdev,O_RDWR|O_NOCTTY|O_NONBLOCK);
|
||||||
ioctl(comfd, TCSANOW, &oldtty); // return TTY to previous state
|
}while (comfd == -1 && errno == EINTR);
|
||||||
close(comfd);
|
if(comfd < 0){
|
||||||
signals(2); // quit?
|
WARN(_("Can't open port %s"),comdev);
|
||||||
|
signals(2);
|
||||||
}
|
}
|
||||||
DBG("OK\nGet current settings...");
|
/* DBG("OK\nGet current settings...");
|
||||||
if(ioctl(comfd, TCGETA, &oldtty) < 0){ // Get settings
|
if(ioctl(comfd, TCGETA, &oldtty) < 0){ // Get settings
|
||||||
/// "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÎÁÓÔÒÏÊËÉ"
|
/// "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÎÁÓÔÒÏÊËÉ"
|
||||||
WARN(_("Can't get settings"));
|
WARN(_("Can't get settings"));
|
||||||
signals(2);
|
signals(2);
|
||||||
|
}*/
|
||||||
|
DBG("Make exclusive");
|
||||||
|
// make exclusive open
|
||||||
|
if(ioctl(comfd, TIOCEXCL)){
|
||||||
|
WARN(_("Can't do exclusive open"));
|
||||||
|
close(comfd);
|
||||||
|
signals(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tty = oldtty;
|
tty = oldtty;
|
||||||
@ -327,13 +335,14 @@ void tty_init(char *comdev, tcflag_t speed){
|
|||||||
* @return amount of readed bytes
|
* @return amount of readed bytes
|
||||||
*/
|
*/
|
||||||
size_t read_tty(uint8_t *buff, size_t length){
|
size_t read_tty(uint8_t *buff, size_t length){
|
||||||
|
if(comfd < 0) return 0;
|
||||||
ssize_t L = 0;
|
ssize_t L = 0;
|
||||||
fd_set rfds;
|
fd_set rfds;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int retval;
|
int retval;
|
||||||
FD_ZERO(&rfds);
|
FD_ZERO(&rfds);
|
||||||
FD_SET(comfd, &rfds);
|
FD_SET(comfd, &rfds);
|
||||||
tv.tv_sec = 0; tv.tv_usec = 500000; // wait for 500ms
|
tv.tv_sec = 0; tv.tv_usec = 50000; // wait for 50ms
|
||||||
retval = select(comfd + 1, &rfds, NULL, NULL, &tv);
|
retval = select(comfd + 1, &rfds, NULL, NULL, &tv);
|
||||||
if (!retval) return 0;
|
if (!retval) return 0;
|
||||||
if(FD_ISSET(comfd, &rfds)){
|
if(FD_ISSET(comfd, &rfds)){
|
||||||
@ -343,6 +352,7 @@ size_t read_tty(uint8_t *buff, size_t length){
|
|||||||
}
|
}
|
||||||
|
|
||||||
int write_tty(const uint8_t *buff, size_t length){
|
int write_tty(const uint8_t *buff, size_t length){
|
||||||
|
if(comfd < 0) return 1;
|
||||||
ssize_t L = write(comfd, buff, length);
|
ssize_t L = write(comfd, buff, length);
|
||||||
if((size_t)L != length){
|
if((size_t)L != length){
|
||||||
/// "ïÛÉÂËÁ ÚÁÐÉÓÉ!"
|
/// "ïÛÉÂËÁ ÚÁÐÉÓÉ!"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user