• No se han encontrado resultados

NO

YES

YES

NO

YES IS

TMR2IF=1?

TMR2IF=0

KE=KE+1

ADC

KE=0

T=1;

AVG=SUM/15 IS KE=15?

SUM=0

TMR2IE=0

RETURN

NO

YES

NO

YES

NO

YES

Is RCIF=1?

RS[RSP]=RCREG

RS[RSP]=$

RSP=0 RS[0]=$

RCIF=0 RCIE=0 Is RS[0]=$? &

RS[RSP-1]=0*0D &&

RS[RSP]=0*0A?

TXREG = '#'

RSF=1

RSP=RSP+1

RETURN

SUBROUTINE

YES

YES

IS TRMT=1

CONVERT

unit=p%10, k=p/10

ten=k%10; hnd=p/100;

a[0]=hnd+0x30;

a[1]=ten+0x30;

a[2]=unit+0x30;

RETURN

TRANSMIT

i=0

TXREG=a[i]

IS i<=2

F

i=i+1

RETURN E

F E

ADC

value=((b1*5)/10) [Converting to deg centigrade]

b1= b1 LOGICALLY OR WITH b2 b2=VALUE IN ADRESL b1=SHIFT 8 BIT OF b1 TO LEFT

b1=VALUE IN ADRESH

S=SET CHANNEL 1 USING ADCON0 b1=0, b2=0

RETURN

HIGH_BAUDRATE

ENABLE SERIAL PORT;

SELECT ASYNCHRONOUS MODE

SET HIGH BAUD RATE;

SPBRG=38

ENABLES USART RECEIVE INTERRUPT

RETURN

RETURN LOW BAUDRATE

ENABLE SERIAL PORT, SELECT ASYNCHRONOUS MODE

SET HIGH BAUD RATE;

SPBRG=38 ]

SET TRANSMIT ENABLE BIT CREN=1

NO

YES

NO

YES

IS TRMT=1

i=0

TXREG=R_S[i]

IS i<=69

RETURN i=i+1 GPS TRANSMIT

SERVER

NO

YES

YES

START

READ DATA SENT FROM SOLDIER

DISPLAY DATA

IF HB<55 OR

HB>95 EXTRACT DATA

DISPLAY HEART BEAT PROBLEM ID & NAME

IN MESSAGE BOX

IF CALL IS PRESS?

CALL SOLDIER

PROGRAM

#include<htc.h>

#define _XTAL_FREQ 12000000 void adc();

void transmit();

void tmrcount();

void conv(int p);

void trans_gps();

void high_baudrate();

void gps_transmit();

void low_baudrate();

int value=0,cnt=0,ke=1,m=0,c=0,d=0,e=0,i=0,temp=0;

char a[3];

char id[11]="12345678\r\n";

char pulse=0;

char bpm=0,ckt=0;

int unit=0,ten=0,hnd=0,k=0,old=0,v=0,n=0,no=0,sum=0,avg=0,ths=0,l=0;

int COUNT=0,jk=0,actual=0,gps_stat=0;

char rcvd_str[71];

char rcvd_str_pos=0;

char rcvd_str_flag = 0;

void interrupt dis() {

if (TMR1IF) //timer module for outing the data in each Min {

TMR1IF=0;

COUNT=COUNT+1;

if(COUNT>344) {

TMR1IF=0;

bpm=ckt;

TMR3L=0;

COUNT=0;

ckt=0;

m=1;

TMR2IE=1;

TMR2ON=1;

} }

if (TMR2IF)//for checking 15 adc values and finaly takes the avg {

TMR2IF=0;

ke=ke+1;

adc();

sum=sum+value;

if(ke==15) {

d=c;

ke=0;

avg=sum/15;

c=avg;

sum=0;

e=1;

TMR2IE=0;

} }

if(RCIF) {

rcvd_str[rcvd_str_pos] = RCREG;

if (rcvd_str[rcvd_str_pos] == '$') {

rcvd_str_pos = 0;

rcvd_str[0] = '$';

}

if (rcvd_str[0] == '$' && rcvd_str[rcvd_str_pos-1] == 0x0D &&

rcvd_str[rcvd_str_pos] == 0x0A) {

TXREG = '#';

rcvd_str_flag = 1;

RCIF=0;

RCIE=0;

}

rcvd_str_pos++;

} }

void main() {

GIE=1;

PEIE=1;

BRGH=1;

SPBRG=38;

SYNC=0;

SPEN=1;

TXEN=1;

TXIF=0;

RCIE=1;

CREN=1;

T2CON=0b00000011;//for adc

T1CON=0b10110001;//for sending data to server in each min T3CON=0b00000011;//for counting heart beat

TMR1L=0;

TMR1H=0;

TMR2IE=0;

TMR1IE=1;

TRISA4=1;

TRISA0=1;

TRISD=0;

TRISE2=0;

TRISE0=0;

TRISC6=0;

TRISC7=1;

TRISC0=1;

ADCON0=0x00;

ADCON1=0x80;

while(1) {

pulse=TMR3L;

actual=pulse;

if(temp!=actual) {

ckt++;

}

if(m==1&&e==1&&rcvd_str_flag == 1)// the values are updated with in 1 Min {

CREN=0;

e=0;

m=0;

rcvd_str_flag=0;

low_baudrate();

for(i=0;i<11;i++) {

while(!TRMT);

TXREG=id[i];

} i=0;

conv(avg);

while(!TRMT);

TXREG='T';

while(!TRMT);

transmit();

conv(bpm);

while(!TRMT);

TXREG='H';

while(!TRMT);

transmit();

bpm=0;

gps_transmit();

high_baudrate();

}

temp=actual;

} }

void conv(int p)//function to convert the int value to charecter

{

unit=p%10;

k=p/10;

ten=k%10;

hnd=p/100;

a[0]=hnd+0x30;

a[1]=ten+0x30;

a[2]=unit+0x30;

}

void transmit() {

for(i=0;i<=2;i++) {

while(!TRMT);

TXREG=a[i];

} }

void adc() {

int b1=0,b2=0;

ADCON0=0X05;//chanel 1 b1=ADRESH;

b1=b1<<8;

b2=ADRESL;//converts the 8 bit in adresl and 2 bit in adresh b1=b1|b2;

value=((b1*5)/10);//converting to deg centigrade }

void low_baudrate() {

SPEN=1;

SYNC=0;

BRGH=1;

SPBRG=78;

TXEN=1;

}

void high_baudrate() {

SPEN=1;

SYNC=0;

BRGH=1;

SPBRG=38;

RCIE=1;

CREN=1;

}

void gps_transmit() {

for(i=0;i<=69;i++)

{

while(!TRMT);

TXREG=rcvd_str[i];

}

}

VB PROGRAM

Dim con As New ADODB.Connection Dim rs As New ADODB.Recordset Dim rs1 As New ADODB.Recordset

Private Sub cboSOLDIER_KeyPress(KeyAscii As Integer) If KeyAscii = 39 Then KeyAscii = 0

End Sub

Private Sub cmdCALL_Click() MSComm1.Output = "ATD" & " "

MSComm1.Output = "" + txtContact.Text + "" & ";"

MSComm1.Output = Chr(&HD) End Sub

Private Sub cboSOLDIER_Click() Dim rsFill As New ADODB.Recordset Set rsFill = Nothing

rsFill.CursorLocation = adUseClient

rsFill.Open "SELECT * FROM RECORD WHERE ID='" & Trim(cboSOLDIER.Text)

& "'", con, adOpenDynamic, adLockOptimistic If Not rsFill.EOF Then

txtId.Text = IIf(Not IsNull(rsFill.Fields(0)), rsFill.Fields(0), "") txtName.Text = IIf(Not IsNull(rsFill.Fields(1)), rsFill.Fields(1), "")

txtDesig.Text = IIf(Not IsNull(rsFill.Fields(2)), rsFill.Fields(2), "")

txtContact.Text = IIf(Not IsNull(rsFill.Fields(3)), rsFill.Fields(3), "") End If

End Sub

Private Sub cmdClear_Click() txtId.Text = ""

txtName.Text = ""

txtDesig.Text = ""

txtContact.Text = ""

cboSOLDIER.Text = ""

End Sub

Private Sub cmdSave_Click()

Dim rsSave As New ADODB.Recordset

If Trim(txtId.Text) = "" Then MsgBox "Id can not be blank.", vbCritical:

txtId.SetFocus: Exit Sub Set rsSave = Nothing

rsSave.CursorLocation = adUseClient

rsSave.Open "SELECT * FROM RECORD WHERE ID='" & Trim(txtId.Text) & "'", con, adOpenDynamic, adLockOptimistic

con.BeginTrans If rsSave.EOF Then rsSave.AddNew

rsSave!ID = Trim(txtId.Text) End If

rsSave!Name = Trim(txtName.Text)

rsSave!POSITION = Trim(txtDesig.Text) rsSave!CONTACT = Trim(txtContact.Text) rsSave.Update

con.CommitTrans

MsgBox "Record Saved Sucessfully.", vbInformation, "Jeevan"

cmdClear_Click LoadSolider txtId.SetFocus End Sub

Private Sub LoadSolider()

Dim rsSoldier As New ADODB.Recordset Set rsSoldier = Nothing

rsSoldier.CursorLocation = adUseClient

rsSoldier.Open "SELECT ID FROM RECORD ORDER BY ID", con, adOpenDynamic, adLockOptimistic

cboSOLDIER.Clear

If Not rsSoldier.EOF Then Do Until rsSoldier.EOF

cboSOLDIER.AddItem rsSoldier!ID rsSoldier.MoveNext

Loop End If End Sub

Private Sub Form_Load() MSComm1.PortOpen = True

Set con = New ADODB.Connection

con.Provider = "Microsoft.Jet.OLEDB.4.0;Data

Source=D:\JEEVAN\JEEVAN.mdb;Persist Security Info=False"

con.Open

Set rs = New ADODB.Recordset rs.ActiveConnection = con rs.LockType = adLockOptimistic rs.Open "RECORD"

Set rs1 = New ADODB.Recordset rs1.ActiveConnection = con

rs1.LockType = adLockOptimistic rs1.Open "LOCATION"

LoadSolider End Sub

Private Sub MSComm1_OnComm() Dim S, A, B, C, D, E, F, G, H As String Dim POS, POS1, POS2, POS3, PO As Integer If MSComm1.CommEvent = comEvReceive Then txtReceive.Text = txtReceive.Text + MSComm1.Input End If

S = txtReceive.Text If Len(S) >= 84 Then txtReceive.Text = ""

G = Mid$(S, 1, 8) txtId.Text = G rs.MoveFirst While Not rs.EOF

If rs.Fields(0) = Text1.Text Then txtName.Text = rs.Fields(1) txtDesig.Text = rs.Fields(2) txtContact.Text = rs.Fields(3) End If

rs.MoveNext Wend

POS = InStr(S, "T") D = Mid$(S, POS + 1, 3) txtTemp.Text = D

POS1 = InStr(S, "H") H = Mid$(S, POS1 + 1, 3) txtHB.Text = H

If H < 65 Or H > 85 Then POS2 = InStr(S, "GPRMC") A = Mid$(S, POS2 + 1) POS = InStr(A, "V")

B = Mid$(A, POS + 2, 9) txtLONGI.Text = B POS1 = InStr(A, "N") C = Mid$(A, POS1 + 2, 10) txtLATTI.Text = C

rs1.MoveFirst While Not rs1.EOF

If rs1.Fields(0) = B And rs1.Fields(1) = C Then Label8.Caption = rs1.Fields(2)

End If

rs1.MoveNext Wend

MsgBox "SOLDIER NO:" & Text1.Text & " " & "HEART BEAT:" & H End If

End If End Sub

Documento similar